两个文件比较之comm命令
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命令相关推荐
- diff命令两个服务器文件,linux 比较两个文件夹不同 (diff命令, md5列表)
比较文件夹diff,可以直接使用diff命令 [root@~]# diff -urNa dir1 dir2 -a Treat all files as text and compare them li ...
- linux 比较两个文件夹不同 (diff命令, md5列表)
比较文件夹diff,可以直接使用diff命令 [root@~]# diff -urNa dir1 dir2 -a Treat all files as text and compare them li ...
- webstorm 两个文件对比不同_DOS 入门到精通 使用 fc 命令比较两个文件,并逐一显示不同之处...
fc 命令的作用是比较两个文件或两组文件,并且分别显示相比较的两个文件的不同之处.此命令的功能比 comp 命令更为强大,进行文件比较时一般也较多地使用 fc 命令. 命令格式:fc [盘符:] [路 ...
- md5工具查看两个文件是否一致
md5 说明:任何一个文件都有唯一个md5值,一般可以通过该值去比对两个文件是否是同一个,只要md5值不一样,可以认为两个文件存在diff. 命令 Linux:md5 文件名 Mac:md5sum 文 ...
- linux比较两个文件命令cmp,Linux系统中使用cmp和comm命令来比较两个文件
cmp cmp 命令:比较任意两个类型的文件,且吧结果输出到标准输出,默认文件相同不输出,不同的文件输出差异 必要参数 -c 显示不同的信息 -l 列出所有的不同信息 -s 错误信息不提示 选择参数 ...
- 两个服务器 文件比较,使用linux的comm命令比较两个已排过序的文件
使用linux的comm命令比较两个已排过序的文件 发布时间:2020-07-09 10:41:42 来源:亿速云 阅读:55 作者:清晨 栏目:服务器 这篇文章主要介绍使用linux的comm命令比 ...
- linux comm命令_在Linux中使用Comm命令比较文件
linux comm命令 Linux have a lot of tools to compare files. These tools provides a lot of powerful feat ...
- Linux 比较两个文件命令
Linux 比较两个文件命令: comm diff file1 file2 主要用于逐行比较显示不同 cmp Linux文件比较命令用来比较两个文件内容的差别. 主要有comm命令和diff命令. 如 ...
- Linux 基础命令——比较两个文件内容的不同
语法]: diff [参数] 文件1 文件2 [说明]: 本命令比较两个文本文件,将不同的行列出来 -b 将一串空格或TAB 转换成一个空格或TAB -e 生成一个编辑角本,作为ex 或ed 的输入可 ...
最新文章
- C语言的集成开发环境
- Makefile常用万能模板(包括静态链接库、动态链接库、可执行文件)
- UML大战需求分析阅读笔记——03
- 数据结构之线性存储结构
- tensorflow2.0学习(一)
- CentOS下Apache服务器的安装与配置
- (转)关于block使用的5点注意事项
- Mahout实战---编写自己的相似度计算方法
- 滴滴入局同城货运,一场闪电战,还是持久战?
- 【福利贴】教你如何移动联通电信免流
- 【深度学习框架体系的学习】pytorch
- 阿里云国际9款免费标签云生成工具
- 工程师小哥魔术揭秘“三仙归洞”,把我都看蒙了!
- python训练自己中文语料库_word2vec+维基百科语料库训练中文模型
- 带动画效果的下拉菜单
- MT4-EA自动化交易研究笔记(2022-04-22)
- PDF编辑管理工具Cisdem PDFMaster Mac
- OpenVINO 2021r4.1 - 瞎搞YOLOV5 模型转换,INT8量化及C++推理实现
- 基于java闲一品交易平台计算机毕业设计源码+系统+lw文档+mysql数据库+调试部署
- [转载]手机号码IP地址归属地查询
热门文章
- Oracle存储过程中如何根据指定的参数判断该参数的值否存在数据表中:
- mysql版本不支持 loop,loopback4, node mysql connector支持 utf8mb4字符集
- C++ 继承 | 对象切割、菱形继承、虚继承、对象组合
- 超硬核!学霸把操作系统经典算法给敲完了!要知行合一
- 最强阿里巴巴历年经典面试题汇总:C++研发岗
- 夫曼编码译码系统课程设计实验报告(含源代码c++_c语言),哈夫曼编码译码系统课程设计实验报告(含源代码C++_C语言)[1]...
- python怎么实现图像去噪_基于深度卷积神经网络和跳跃连接的图像去噪和超分辨...
- CLion导入用户自己的lib和头文件
- google浏览器 隐藏功能开启
- linux读写文件 简单版