Linux 文件取交集 并集 差集

使用sort+uniq

直接举例子

file1的内容是

aaaa
bbbb
cccc

 

file2的内容时

aaaa
bbbb
dddd

求交集

cat file1 file2 | sort | uniq -d

  

求并集

cat file1 file2 | sort | uniq

  

求 file1 - file2差集 (前提是file1 file2 里面不包含重复的元素)

cat file1 file2 file2 | sort | uniq -u

  

使用grep

求交集

grep -f file1 file2

  

求差集 file2 - file1 (可以包含重复元素)

grep -f file1 -v file2

总结

一些复杂场景下使用grep会比较好一点,比如两个文件的内容不是简单的一列,而是多列的情况。但是使用sort+uniq的性能要比grep要快速很多。(sort+uniq的时间复杂度是mlogm,m为文件总行数;grep为m*n,m、n分别为两个文件的行数)。

原文地址:https://www.cnblogs.com/yanximin/p/13416226.html