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 中没有的内容。