comm命令可用于两个文件之间的比较。它有很多不错的选项可用来调整输出,以便我们执
行交集、求差(difference)以及差集操作。
 交集:打印出两个文件所共有的行。
 求差:打印出指定文件所包含的且互不相同的那些行。
 差集:打印出包含在文件a中,但不包含在其他指定文件中的那些行。

假设现在有两个文件a和b,内容分别是:a(1,2,3),b(3,4,5)。那么,对这两个文件进行操作的结果如下。
交集:3。
求差:1,2,4,5。
差集(a):1,2。

需要注意的是comm必须使用排过序的文件作为输入。请看看下面的例子:

[root@host1 shell]# echo -e "1\n3\n8\n2" > a.txt
[root@host1 shell]# cat a.txt
1
3
8
2
[root@host1 shell]# echo -e "1\n5\n7\n2" > b.txt
[root@host1 shell]# cat b.txt
1
5
7
2
[root@host1 shell]# sort a.txt  -o a.txt ; sort b.txt -o b.txt

(1) 首先执行不带任何选项的comm:

[root@host1 shell]# comm a.txt b.txt 12
357
8

输出的第一列包含只在a.txt中出现的行(a的差集),第二列包含只在b.txt中出现的行(b的差集),第三列
包含a.txt和b.txt中相同的行(交集)。各列以制表符(\t)作为定界符。

(2) 为了打印两个文件的交集,我们需要删除第一列和第二列,只打印出第三列:

[root@host1 shell]# comm -1 -2 a.txt b.txt
1
2

(3) 打印出两个文件中不相同的行:

[root@host1 shell]# comm -3 a.txt b.txt
357
8

在这次的输出中,那些唯一出现的行使得列中出现了空白字段。所以这两列在同一
行上不会同时都出现内容。为了提高输出结果的可用性,需要删除空白字段,将两
列合并成一列:

3
5
7
8

(4) 要生成规范的输出,得使用下面的命令:

[root@host1 shell]# comm -3 a.txt b.txt | sed 's/^\t//'
3
5
7
8

(5) 通过删除不需要的列,我们就可以分别得到a.txt和b.txt的差集。
a.txt的差集
$ comm a.txt b.txt -2 -3
-2 -3 删除第二列和第三列。
b.txt的差集
$ comm a.txt b.txt -1 -3
-1 -3 删除第一列和第三列。

工作原理:

comm的命令行选项可以按照需求对输出进行格式化,例如:
 -1 从输出中删除第一列;
 -2 从输出中删除第二列;
 -3 从输出中删除第三列。
  在生成统一输出时,sed命令通过管道获取comm的输出。它删除行首的 \t字符。sed中的s
表示替换(substitute)。/^\t/ 匹配行前的 \t(^是行首标记)。//(两个/操作符之间没有任何
字符)是用来替换行首的\t的字符串。如此一来,就删除了所有行首的\t。
  差集操作允许你比较两个文件,打印出只在a.txt或b.txt中出现的行。当a.txt和b.txt作为comm
命令的参数时,输出中的第一列是a.txt相对于b.txt的差集,第二列是b.txt相对于a.txt的差集。

转载于:https://www.cnblogs.com/01-single/p/6950645.html

两个文件比较之comm命令相关推荐

  1. diff命令两个服务器文件,linux 比较两个文件夹不同 (diff命令, md5列表)

    比较文件夹diff,可以直接使用diff命令 [root@~]# diff -urNa dir1 dir2 -a Treat all files as text and compare them li ...

  2. linux 比较两个文件夹不同 (diff命令, md5列表)

    比较文件夹diff,可以直接使用diff命令 [root@~]# diff -urNa dir1 dir2 -a Treat all files as text and compare them li ...

  3. webstorm 两个文件对比不同_DOS 入门到精通 使用 fc 命令比较两个文件,并逐一显示不同之处...

    fc 命令的作用是比较两个文件或两组文件,并且分别显示相比较的两个文件的不同之处.此命令的功能比 comp 命令更为强大,进行文件比较时一般也较多地使用 fc 命令. 命令格式:fc [盘符:] [路 ...

  4. md5工具查看两个文件是否一致

    md5 说明:任何一个文件都有唯一个md5值,一般可以通过该值去比对两个文件是否是同一个,只要md5值不一样,可以认为两个文件存在diff. 命令 Linux:md5 文件名 Mac:md5sum 文 ...

  5. linux比较两个文件命令cmp,Linux系统中使用cmp和comm命令来比较两个文件

    cmp cmp 命令:比较任意两个类型的文件,且吧结果输出到标准输出,默认文件相同不输出,不同的文件输出差异 必要参数 -c 显示不同的信息 -l 列出所有的不同信息 -s 错误信息不提示 选择参数 ...

  6. 两个服务器 文件比较,使用linux的comm命令比较两个已排过序的文件

    使用linux的comm命令比较两个已排过序的文件 发布时间:2020-07-09 10:41:42 来源:亿速云 阅读:55 作者:清晨 栏目:服务器 这篇文章主要介绍使用linux的comm命令比 ...

  7. linux comm命令_在Linux中使用Comm命令比较文件

    linux comm命令 Linux have a lot of tools to compare files. These tools provides a lot of powerful feat ...

  8. Linux 比较两个文件命令

    Linux 比较两个文件命令: comm diff file1 file2 主要用于逐行比较显示不同 cmp Linux文件比较命令用来比较两个文件内容的差别. 主要有comm命令和diff命令. 如 ...

  9. Linux 基础命令——比较两个文件内容的不同

    语法]: diff [参数] 文件1 文件2 [说明]: 本命令比较两个文本文件,将不同的行列出来 -b 将一串空格或TAB 转换成一个空格或TAB -e 生成一个编辑角本,作为ex 或ed 的输入可 ...

最新文章

  1. sql语句动态创建连接服务器
  2. jsp判断语句_Java的web展现层JSP的JSTL标签详细总结
  3. SimpleDateFormat处理 dd-MMM-yy类型日期
  4. java如何保存初始化数据_java – 如何在JUnit测试中初始化数据
  5. MATLAB随机模拟
  6. Windows 10 常用的快捷键及常用指令
  7. STM32那点事(5)_ADC(下)
  8. Spring MVC中的基本流程
  9. c语言模拟试题快速排序,快速排序(东软喜欢考类似的算法填空题,又如堆排序的算法等)...
  10. java webinf lib jar_java web项目中classes文件夹下的class和WEB-INF/lib中jar里的class文件加载顺序...
  11. linux系统可以使用ppt功能不,Linux操作系统使用5.ppt
  12. ie8以ie7方式解析
  13. 手机伪原创视频处理工具 视频md5修改器ios
  14. regionGrowth3D
  15. 杀戮尖塔 地图生成器参考
  16. webform如何接收前端的ajax数据,HttpWebResponse Post 前端控件数据,后台如何接收?...
  17. CAGD——微分几何的曲线曲面表示
  18. html页脚版权声明,版权声明与免责声明的区别
  19. H5编辑器H5-Dooring2.30更新指南
  20. TextView.setText()为什么会出错

热门文章

  1. 图像 理想低通滤波_图像处理之滤波(下)
  2. 公司创始人、董事长、CEO和总裁谁更大,有什么区别?
  3. 你担心大家会滥用的全局变量,大家(包括你自己)一定会滥用
  4. epoll的再次认识
  5. 《Python Cookbook 3rd》笔记(3.11):随机选择
  6. 深入理解Solidity
  7. 安卓布局参数类LayoutParams
  8. 深入剖析C++中的string类
  9. 英特尔预计5年内将成智能手机芯片大厂
  10. 简单 3 步实现高效编程