2013-07-25 16 views
56

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 

Odpowiedz

77

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ą.

+4

+1 dla opcji '-w' wyjaśnienia. –

+3

Czy -F jest tylko optymalizacją, jeśli nie chcesz używać wyrażeń regularnych? – phoenix

+1

@phoenix dokładnie. –

0

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