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

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.


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
Durch die Nutzung unserer Website bestätigen Sie, dass Sie unsere Cookie-Richtlinie und Datenschutzrichtlinie gelesen und verstanden haben.
Licensed under cc by-sa 3.0 with attribution required.