Wie man mit einer Liste von Wörtern grep

81

Ich habe eine Datei A mit 100 Wörtern, die durch neue Zeilen getrennt sind. Ich möchte Datei B durchsuchen, um festzustellen, ob eines der Wörter in Datei A darin vorkommt.

Ich habe Folgendes versucht, funktioniert aber bei mir nicht:

grep -F A B
Phönix
quelle

Antworten:

113

Sie müssen die Option verwenden -f:

$ grep -f A B

Die Option -Fführt eine feste Zeichenfolgensuche -fdurch, bei der eine Datei mit Mustern angegeben wird. Möglicherweise möchten Sie beides, wenn die Datei nur feste Zeichenfolgen und keine regulären Ausdrücke enthält.

$ grep -Ff A B

Möglicherweise möchten Sie auch die -wOption, nur ganze Wörter abzugleichen:

$ grep -wFf A B

Lesen Sie man grepeine Beschreibung aller möglichen Argumente und ihrer Funktionsweise.

Chris Seymour
quelle
4
Ist -F nur eine Optimierung, wenn Sie keine regulären Ausdrücke verwenden möchten?
Phoenix
Wie wäre es, wenn Sie alle Vorkommen von Wörtern in Datei A in einem Verzeichnisbaum B finden und nur die Dateinamen aller Übereinstimmungen in B auflisten?
eifriger Hacker
2

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

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