经常会遇到比较两个文件的不同行的需求,这里记录下简单的方法
以下面两个文件为例:
1,首先对两个文件分别排序去重
sort 1.txt | uniq >> s1.txt
sort 2.txt | uniq >> s2.txt
注意需要去重(具体原因下面解释)
2,用comm命令比较两个文件
comm file1 file2
comm用于比较两个文件的异同,输出三列:(111 111 算为一列)
第一列:只有file1中有的内容
第二列:只有file2中有的内容
第三列:两个文件共同的内容
可以用参数 -123 进行屏蔽和选择输出,如下:
comm -12 s1.txt s2.txt // 屏蔽 1,2列
comm -13 s1.txt s2.txt // 屏蔽1,3列
comm -23 s1.txt s2.tx //屏蔽2,3列
3,最后
输出两个文件相同的内容(两文件交集): comm -12 file1 file2
输出只有第一个文件有的内容:comm -23 file1 file2
输出只有第二个文件有的内容:comm -13 file1 file2
输出两个文件的差集:comm -3 file1 file2