Mam plik A zawierający 100 słów oddzielonych nowymi liniami. Chciałbym przeszukać plik B, aby zobaczyć, czy DOWOLNE ze słów w pliku A występują w nim.Jak grep z listą słów
Próbowałem następujących, ale nie działa na mnie:
grep -F A B
Mam plik A zawierający 100 słów oddzielonych nowymi liniami. Chciałbym przeszukać plik B, aby zobaczyć, czy DOWOLNE ze słów w pliku A występują w nim.Jak grep z listą słów
Próbowałem następujących, ale nie działa na mnie:
grep -F A B
Musisz użyć opcji -f
:
$ grep -f A B
Opcja -F
ma stałą wyszukiwania ciąg gdzie jako -f
jest dla określanie pliku wzorców. Możesz chcieć obu, jeśli plik zawiera tylko stałe ciągi, a nie regexps.
$ grep -Ff A B
Można też wybrać opcję -w
na dopasowanie tylko całych słów:
$ grep -wFf A B
Czytaj man grep
dla opisu wszystkich możliwych argumentów i co robią.
Aby znaleźć bardzo długą listę słów w dużych plików, może to być bardziej efektywne w użyciu egrep:
remove the last \n of A
$ tr '\n' '|' <A> A_regex
$ egrep -f A_regex B
+1 dla opcji '-w' wyjaśnienia. –
Czy -F jest tylko optymalizacją, jeśli nie chcesz używać wyrażeń regularnych? – phoenix
@phoenix dokładnie. –