Linux 对比两个文本的交集和差集(comm)
介绍
comm命令可以对两个已排序好的文本的内容进行交集和差集的对比,记住必须是已排序过的文件;可以使用sort命令对没有排序的文件进行排序,comm命令在对比结果中会产生三列分别是:在A中不在B中的内容,在B中不在A中的内容,AB的交集的内容。
事例
[root@localhost test]# cat a 3 c 2 b 1 a [root@localhost test]# cat b 2 b 3 c 4 d
其中文件a不是倒序的文件,看看直接拿来对比会出现什么问题。
[root@localhost test]# comm a b 2 b 3 c comm: file 1 is not in sorted order 2 b 1 a 4 d
对比结果出现了问题提示文件1不是已排序的文件。
1.对文件进行排序
[root@localhost test]# sort a -o a [root@localhost test]# cat a 1 a 2 b 3 c
2.对比文件
[root@localhost test]# comm a b 1 a 2 b 3 c 4 d
第一列:在a文件中不在b文件中的内容
第二列:在b文件中不在a文件中的内容
第三列:a文件和b文件的交集
comm命令参数
-1:不显示第一列
-2:不显示第二列
-3:不显示第三列
[root@localhost test]# comm a b -1 2 b 3 c 4 d [root@localhost test]# comm a b -2 1 a 2 b 3 c [root@localhost test]# comm a b -3 1 a 4 d [root@localhost test]# comm a b -12 2 b 3 c
其它的一些特殊处理方法
[root@localhost test]# comm a b -3 1 a 4 d [root@localhost test]# comm a b -3 | sed 's/^\t//' 1 a 4 d
可以使用sed命令将开头的制表符(tab)替换掉,s:替换的意思,^:以什么开头,\t:制表符,//:空
总结
备注: 作者:pursuer.chen 博客:http://www.cnblogs.com/chenmh 本站点所有随笔都是原创,欢迎大家转载;但转载时必须注明文章来源,且在文章开头明显处给明链接。 《欢迎交流讨论》 |
【推荐】国内首个AI IDE,深度理解中文开发场景,立即下载体验Trae
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步
· go语言实现终端里的倒计时
· 如何编写易于单元测试的代码
· 10年+ .NET Coder 心语,封装的思维:从隐藏、稳定开始理解其本质意义
· .NET Core 中如何实现缓存的预热?
· 从 HTTP 原因短语缺失研究 HTTP/2 和 HTTP/3 的设计差异
· 周边上新:园子的第一款马克杯温暖上架
· 分享 3 个 .NET 开源的文件压缩处理库,助力快速实现文件压缩解压功能!
· Ollama——大语言模型本地部署的极速利器
· DeepSeek如何颠覆传统软件测试?测试工程师会被淘汰吗?
· 使用C#创建一个MCP客户端