我有两个文件:
文件1:
A B
C D
F A
C G
文件2:
A G
C D
A C
D C
F A
我想要的是在与文件1进行比较时找到文件2中重复的所有单词对,然后从文件2中删除它们并加入这两个文件。在这种情况下,重复的对是:
C D
D C
F A
请注意,我不希望以相反的顺序使用相同的对。任何单词都可以在两个文件中多次出现。
我尝试了这个但是效率不高,需要额外的步骤来删除文件2中的重复:
cat file1 | while read f1 f2; do grep "$f1 $f2\|$f2 $f1" file2; done > redundancies.txt
grep -vf redundancies.txt file2 > file2b
答案 0 :(得分:1)
$ grep -vFf f1 f2
A G
A C
D C
这将读取文件2并删除文件1中也存在的所有行。要处理任何顺序的单词,您可以将f1
替换为process substitution,并使用两个单词排序打印文件
$ grep -vFf <(cat f1; awk '{print $2,$1}' f1) f2
A G
A C