2013-07-25 9 views
56

Ich habe eine Datei A mit 100 Wörtern darin durch neue Zeilen getrennt. Ich würde gerne Datei B durchsuchen, um zu sehen, ob eines der Wörter in Datei A darin vorkommen.Wie grep mit einer Liste von Wörtern

ich folgendes versucht, funktioniert aber nicht für mich:

grep -F A B 

Antwort

77

Sie müssen die Option verwenden -f:

$ grep -f A B 

Die Option -F funktioniert eine String-Suche behoben, als -f für ist Spezifizieren einer Datei von Mustern. Möglicherweise möchten Sie beides, wenn die Datei nur feste Zeichenfolgen und keine regulären Ausdrücke enthält.

$ grep -Ff A B 

Sie können auch wollen die -w Option zur Anpassung nur ganze Wörter:

$ grep -wFf A B 

lesen man grep für eine Beschreibung aller möglichen Argumente und was sie tun.

+4

+1 für '-w' Option Erklärung. –

+3

Ist -F nur eine Optimierung, wenn Sie Regexps nicht verwenden möchten? – phoenix

+1

@phoenix genau. –

0

Um eine sehr lange Liste von Wörtern in großen Dateien zu finden, kann es effizienter sein, verwenden egrep:

remove the last \n of A 
$ tr '\n' '|' <A> A_regex 
$ egrep -f A_regex B 
Verwandte Themen