Найти повторяющиеся пары, сравнивая два файла - PullRequest
0 голосов
/ 28 мая 2018

У меня есть два файла:

Файл 1:

A B
C D
F A
C G

Файл 2:

A G
C D
A C
D C
F A

Мне нужно найти все повторяющиеся пары словв файле 2 при сравнении с файлом 1 и после удаления их из файла 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

1 Ответ

0 голосов
/ 28 мая 2018
$ grep -vFf f1 f2
A G
A C
D C

Это читает файл 2 и удаляет все строки, которые также присутствуют в файле 1. Чтобы обработать слова в любом порядке, вы можете заменить f1 на подстановку процесса , которая печатает файлс обоими порядками слов.

$ grep -vFf <(cat f1; awk '{print $2,$1}' f1) f2
A G
A C
...