linux下用sort和uniq求两个文件的并集差集和交集
2018-08-28 本文已影响0人
陆_志东
准备数据
注意
:如果你得到的结果并不是想要的结果,那么有可能是你的文件中出现了空格,导致uniq认为不是重复的数据
比如有两个文件
out1.txt
1
2
3
4
5
out2.txt
1
3
5
7
9
求两个文件的交集
>>sort out1.txt out2.txt | uniq -d # -d 输出重复的行, 需要注意一个问题,那就是这两个文件,在各自的文件中不要出现重复的数据
1
3
5
求两个文件的并集
>>sort out1.txt out2.txt | uniq # uniq不加参数意思是去掉多余重复的数据,保留一条唯一的
1
2
3
4
5
7
9
求两个文件的差集
out1.txt-out2.txt
>>sort out1.txt out2.txt out2.txt | uniq -u
2
4
讲解sort out1.txt out2.txt out2.txt 会让out2.txt的所有内容都出现两次,所以uniq -u 之后不会出现 out2.txt 里面的内容,
而out1.txt和out2.txt重复的内容会至少出现3次以上,也不会输出到结果中.
所以最终结果一定是out1.txt在out2.txt中没有出现过的数据,也就是out1.txt-out2.txt的差集
out2.txt - out1.txt
>> sort out1.txt out1.txt out2.txt | uniq -u
7
9
原理请看上面的out1.txt-out2.txt的讲解,原理是一样的