博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
Linux comm命令求出文件的交集、差集
阅读量:5760 次
发布时间:2019-06-18

本文共 1381 字,大约阅读时间需要 4 分钟。

A(1,2,3)和B(3,4,5),A和B的交集是3,A对B的差集是1和2,B对A的差集是4和5,A和B求差的结果是1、2、4、5。

在Linux中可以使用comm命令求出这些集。

[root@xuexi tmp]# cat <
set1.txt> orange> gold> apple> sliver> steel> iron> eof
[root@xuexi tmp]# cat <
set2.txt> orange> gold> cookiee> carrot> eof

使用comm命令。

[root@xuexi tmp]# comm set1.txt set2.txtapple                orangecomm: file 1 is not in sorted ordercomm: file 2 is not in sorted order                gold        cookiee        carrotsilversteeliron

提示没有排序,所以comm必须要保证比较的文件是有序的。

[root@xuexi tmp]# sort set1.txt -o set1.txt;sort set2.txt -o set2.txt
[root@xuexi tmp]# comm set1.txt set2.txt                             apple        carrot        cookiee                goldiron                orangesilversteel

结果中输出了3列,每一列使用制表符\t隔开。第一列是set1.txt中有而set2.txt中没有的,第二列则是set2.txt中有而set1.txt中没有的,第三列是set1.txt和set2.txt中都有的。

根据这三列就可以求出交集、差集和求差。

交集就是第三列。使用-1和-2分别删除第一第二列就是第三列的结果。

[root@xuexi tmp]# comm set1.txt set2.txt -1 -2goldorange

A对B的差集就是第一列,B对A的差集就是第二列。

[root@xuexi tmp]# comm set1.txt set2.txt  -2 -3  # A对B的差集appleironsilversteel
[root@xuexi tmp]# comm set1.txt set2.txt  -1 -3   # B对A的差集carrotcookiee

A和B的求差就是第一列和第二列的组合。

[root@xuexi tmp]# comm set1.txt set2.txt  -3  apple        carrot        cookieeironsilversteel

但是这样分两列的结果不方便查看,应该进行处理使它们显示在同一列上。

[root@xuexi tmp]# comm set1.txt set2.txt  -3 | tr "\t" "\0"applecarrotcookieeironsilversteel

转载地址:http://eglkx.baihongyu.com/

你可能感兴趣的文章
C#如何提取PPT中 SmartArt文本和批注中的文本
查看>>
通过文本查找元素
查看>>
统计数据库大小
查看>>
Asp.net MVC3学习案例
查看>>
IO流的学习--文件夹下文件的复制
查看>>
第十六章:脚本化HTTP
查看>>
EXCEL表中如何让数值变成万元或亿元
查看>>
zabbix性能优化实践
查看>>
linux下的CPU平均负载
查看>>
Android学习笔记-----------内容提供者
查看>>
操作系统的发展史
查看>>
Git异常:Cannot delete the branch 'test1' which you are currently on
查看>>
最全的命令行(gradle)打包安卓apk
查看>>
C# 3.0 中求交集、差集、并集
查看>>
uva10827Maximum sum on a torus
查看>>
[转]Unity3D Editor 编辑器简易教程
查看>>
Console-算法[for]-简单画图
查看>>
好用的模糊搜索下拉提示
查看>>
一次项目总结,内容设置页面
查看>>
编程设置IE代理的几种方式
查看>>