我有两个文件:
文件 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
最佳答案
$ 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
关于linux - 查找重复对比较两个文件,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/50569905/