1. 简介

comm命令可以用于两个文件之间的比较,它有一些选项可以用来调整输出,以便执行交集、求差、以及差集操作。

  • 交集:打印出两个文件所共有的行。

  • 求差:打印出指定文件所包含的且不相同的行。

  • 差集:打印出包含在一个文件中,但不包含在其他指定文件中的行。

2. 语法

  1. comm (选项) (参数)
3. 选项
  • -1:不显示在第一个文件出现的内容

  • -2:不显示在第二个文件中出现的内容

  • -3:不显示同时在两个文件中都出现的内容

4. 参数
  • 文件1:指定要比较的第一个有序文件

  • 文件2:指定要比较的第二个有序文件

5. 实例

~/company/sh$ cat 1.txt

1a
1b
1c
1d
1f
1e
3a
3b
3c

~/company/sh$ cat 2.txt

2a
2b
2c
2d
2e
2f
3a
3b
3c

(1)无选项:输出的第一列只包含在1.txt中出现的行,第二列包含在2.txt中出现的行,第三列同时包含在1.txt和2.txt中的行。各列是以制表符(\t)作为定界符。

~/company/sh$ omm 1.txt 2.txt

1a
1b
1c
1d
1f
1e
  2a
  2b
  2c
  2d
  2e
  2f
    3a
    3b
    3c

(2)-1选项(可以理解为-1删除第一列,-2删除第二列):不显示只在第一个文件出现的内容,输出的第一列只包含在2.txt中出现的行,第二列同时包含在1.txt和2.txt中的行

~/company/sh$ comm -1 1.txt 2.txt

2a
2b
2c
2d
2e
2f
  3a
  3b
  3c

(3)交集:第三列就是交集的内容,只需删除第一列和第二列内容即可

~/company/sh$ comm -1 -2 1.txt 2.txt

3a
3b
3c

(4)求差:打印出两个文件中不相同的行,需要删除第三列,sed 's/^\t//' 是将制表符(\t)删除,以便把两列合并成一列。

~/company/sh$ comm -3 1.txt 2.txt

1a
1b
1c
1d
1f
1e
  2a
  2b
  2c
  2d
  2e
  2f

~/company/sh$ comm -3 1.txt 2.txt|sed 's/^\t//' 

1a
1b
1c
1d
1f
1e
2a
2b
2c
2d
2e
2f

(5)差集

a.txt的差集

~/company/sh$ comm -2 -3 1.txt 2.txt

1a
1b
1c
1d
1f
1e

b.txt差集

~/company/sh$ comm -1 -3 1.txt 2.txt

2a
2b
2c
2d
2e
2f

linux 命令之comm的更多相关文章

  1. Linux命令整理中...

    Linux命令整理中... 最常用命令(我最近最常用的一般放在前面tipsbychsry) clear 清屏 date 显示日期 cal 显示日历 cal 2014 显示2014年的日历 shutdo ...

  2. [Android ] linux命令英文缩写的含义(方便记忆)

    du -sh */ reference to : http://blog.chinaunix.net/uid-27164517-id-3299073.html linux常用命令的英文单词缩写 命令缩 ...

  3. 运维工程师必会的109个Linux命令

    运维工程师必会的109个Linux命令 版本1.0 崔存新 更新于2009-12-26 目录 1 文件管理 6 1.1 basename 6 1.2 cat 6 1.3 cd 7 1.4 chgrp ...

  4. 【改造Linux命令之rm - 删除文件或目录-】

    用途说明 rm命令是常用的命令,用来删除文件或目录(remove files or directories).它也是一个危险的命令,使用的时候要特别当心,尤其对于新手,否则整个系统就会毁在这个命令(比 ...

  5. 77个常用Linux命令和工具

    77个常用Linux命令和工具 Linux管理员不能单靠GUI图形界面吃饭.这就是我们编辑这篇最实用Linux命令手册的原因.这个指南是特别为Linux管理员和系统管理员 设计的,汇集了最有用的一些工 ...

  6. 十年linux命令总结

    十年linux命令总结 本文链接: http://codingstandards.iteye.com/blog/786653 关于命令类型划分 本表中列出了我穷尽了我所有的记忆整理出来的Linux命令 ...

  7. linux命令英文缩写的含义(方便记忆)

    命令缩写: ls:list(列出目录内容) cd:Change Directory(改变目录) su:switch user 切换用户 rpm:redhat package manager 红帽子打包 ...

  8. Linux命令 比较文件

    cmp [功能说明] 比较文件 #cmp可以比较任何类型的文件,并在标准输出设备上显示文件的第一次不同处的行号和字节号,分别从1开始,但是一般用于比较文本文件 [语法格式] Cmp[参数][文件1][ ...

  9. linux 命令中英文对照,收集

    linux 命令中英文对照,收集   linux 命令英文全文 Is Linux CLI case-sensitive? The answer is, yes. If you try to run L ...

随机推荐

  1. java中interface的详解

    JAVA的核心概念:接口(interface) 接口与类属于同一层次,实际上,接口是一种特殊的抽象类. 如:    interface IA{ }  public interface: 公开接口  与 ...

  2. 下载Tomcat时Tomcat网站上的core和deployer的区别

    下载Tomcat时Tomcat网站上的core和deployer的区别 做JavaEE开发的朋友,无论是学习者还是已经工作的朋友,总是会用到Tomcat这个Servlet容器,那么大家从Tomcat官 ...

  3. java comet

    http://www.javaworld.com/article/2077995/java-concurrency/asynchronous-processing-support-in-servlet ...

  4. python3+ 模块学习 之 re

    re 模块 参考:Python3 如何优雅地使用正则表达式(详解系列) Python3 正则表达式特殊符号及用法(详细列表)    (出处: 鱼C论坛) 正则表达式 常用元字符:. ^ $ * + ? ...

  5. 【AppCan 开发者】北京开发者交流会之行

    不久前AppCan官方组织了开发者交流会活动,我有幸参加了这次活动,官方报销全部费用,还有妹子相伴,哇哇,这是光明正大打FB的节奏啊~ (呃,说实话,这是俺第一次去帝都~心里挺激动的~) 10.25帝 ...

  6. leetcode-【中等题】228. Summary Ranges

    题目: 228. Summary Ranges Given a sorted integer array without duplicates, return the summary of its r ...

  7. Salesforce 动态审批

    由于Salesforce只支持根据条件动态选择审批分支,如果我们想进一步支持动态根据页面的某种条件选择审批人,Salesforce是不支持的.因此我们只能通过override salesforce审批 ...

  8. bond汇总

    七种bond模式说明: 第一种模式:mod=0 ,即:(balance-rr) Round-robin policy(平衡抡循环策略)特点:传输数据包顺序是依次传输(即:第1个包走eth0,下一个包就 ...

  9. [python学习] 介绍python的property,以及为什么要用setter,一个小栗子

    python中的property是比较好用的. 先来一段代码 #-*- coding:utf-8 -*- class C(object): status_dict = { 1: 'accept', 2 ...

  10. Shaders(读书笔记4 --- Real-Time rendering)

    1. vertex,pixel以及geometry shaders共享一个programming model,即common-shader core,在GPU架构中的unified shader可以和 ...