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. C语言的集成开发环境
  2. Makefile常用万能模板(包括静态链接库、动态链接库、可执行文件)
  3. UML大战需求分析阅读笔记——03
  4. 数据结构之线性存储结构
  5. tensorflow2.0学习(一)
  6. CentOS下Apache服务器的安装与配置
  7. (转)关于block使用的5点注意事项
  8. Mahout实战---编写自己的相似度计算方法
  9. 滴滴入局同城货运,一场闪电战,还是持久战?
  10. 【福利贴】教你如何移动联通电信免流
  11. 【深度学习框架体系的学习】pytorch
  12. 阿里云国际9款免费标签云生成工具
  13. 工程师小哥魔术揭秘“三仙归洞”,把我都看蒙了!
  14. python训练自己中文语料库_word2vec+维基百科语料库训练中文模型
  15. 带动画效果的下拉菜单
  16. MT4-EA自动化交易研究笔记(2022-04-22)
  17. PDF编辑管理工具Cisdem PDFMaster Mac
  18. OpenVINO 2021r4.1 - 瞎搞YOLOV5 模型转换,INT8量化及C++推理实现
  19. 基于java闲一品交易平台计算机毕业设计源码+系统+lw文档+mysql数据库+调试部署
  20. [转载]手机号码IP地址归属地查询

热门文章

  1. Oracle存储过程中如何根据指定的参数判断该参数的值否存在数据表中:
  2. mysql版本不支持 loop,loopback4, node mysql connector支持 utf8mb4字符集
  3. C++ 继承 | 对象切割、菱形继承、虚继承、对象组合
  4. 超硬核!学霸把操作系统经典算法给敲完了!要知行合一
  5. 最强阿里巴巴历年经典面试题汇总:C++研发岗
  6. 夫曼编码译码系统课程设计实验报告(含源代码c++_c语言),哈夫曼编码译码系统课程设计实验报告(含源代码C++_C语言)[1]...
  7. python怎么实现图像去噪_基于深度卷积神经网络和跳跃连接的图像去噪和超分辨...
  8. CLion导入用户自己的lib和头文件
  9. google浏览器 隐藏功能开启
  10. linux读写文件 简单版