Linux 使用grep删除两个文件相同部分

Linux 使用grep删除两个文件相同部分

首先描述一下这个问题:比如两个文件file1和file2,删除两个文件中共同的部分,留下两个文件中独自有的部分

1、已知俩文件内容

[root@grep ~]# cat 1.txt 
aaa
111
bbb
222
ccc
333
ddd
444
eee
555

[root@grep ~]# cat 2.txt 
eee
111
kkk
999
eee
aaa
222
666

2、使用grep

[root@grep ~]# grep -vf 1.txt 2.txt && grep -vf 2.txt 1.txt
kkk
999
666
bbb
ccc
333
ddd
444
555

在这里用到了两个参数:

  • 参数-v,表示invert match,即反向匹配,输出没有匹配上的项。
  • 参数-f,表示从文件中读取匹配模板(pattern)。

前一部分在文件file1中匹配模板,来反向匹配文件file2中的内容,即输出文件file2中,在file1中没有的内容。后面的一部分同理可得,输出文件file1中,在file2 中没有的内容。

其他方法请参考这里