两个文件必须是排序和唯一(sorted and unique)
默认输出为三列,第一列为是A-B,第二列B-A,第三列为A交B
aaa.txt的差集 -2 -3 参数
bbb.txt的差集 -1 -3 参数
ref: 如何求两个文件的交集、并集和差集?------sort和uniq闪亮登场 - stpeace的专栏 - CSDN博客
交集:
并集:
差集:
给定两个文件 a.txt 和 b.txt ,每行是一个记录(假设没有重复),要求输出两集合的交集、并集、差集,输出的结果只包括唯一项。
交集定义为同时出现在两个文件中的记录项;
并集定义为出现在任何一个文件中的记录项;
差集( A-B )定义为出现在A中而且不出现在B中的记录;
对称差集定义为只出现在一个文件中的记录;
假设 a.txt 包括 a, c, b 三行。假设 b.txt 包括 d, e, c, b 四行。
交集 ,把两个文件放到一起排序,只输出次数多于一次的项:
$ sort a.txt b.txt | uniq -d
并集 ,把两个文件放到一起排序,重复的项只算一次:
$ sort a.txt b.txt | uniq
差集(A-B) ,把B的元素重复2份和A的元素放到一起排序,只输出出现一次的项:
$ sort a.txt b.txt b.txt | uniq -u
对称差 ,把两个文件放到一起排序,只输出出现一次的项:
$ sort a.txt b.txt | uniq -u
指定分隔符(-t)及基于哪一列(-k)、基于数值(-n) 、逆序(-r)进行排序
#排序之后删除了重复行,同时在行首位置输出该行重复的次数:
执行命令:sort testfile | uniq -c ,输出结果如下
#仅显示存在重复的行,并在行首显示该行重复的次数:
执行命令:sort testfile | uniq -dc,输出结果如下
#仅显示没有重复的行:
执行命令:sort testfile | uniq -u,输出结果如下
假设一个人A写了main.c程序之后,把代码发给另外一个人B,B写了程序之后,再把代码合入到自己的当中,但是A只想把B的差异部分合入到自己的代码当中,在这种情况之下可以通过diff命令生成差异文件,在合入到自己的代码当中。
代码结构:
A编写的test1/main.c
B编写的test2/main.c
diff 命令生成差异文件:diff -ruNa test1/main.c test2/main.c >diff.patch
diff.patch内容如下
使用如下命令即可把patch合入,合入之后,test1/main.c的内容跟test2/main.c的一样
欢迎分享,转载请注明来源:内存溢出
评论列表(0条)