grep
ist ein leistungsstarkes Befehlszeilentool, mit dem Sie eine oder mehrere Eingabedateien nach Zeilen durchsuchen können, die mit einem regulären Ausdruck übereinstimmen, und jede übereinstimmende Zeile in die Standardausgabe schreibt.
In diesem Artikel zeigen wir Ihnen, wie Sie GNU grep
verwenden um nach mehreren Zeichenfolgen oder Mustern zu suchen.
Mehrere Muster gruppieren #
GNU grep
unterstützt drei Syntaxen für reguläre Ausdrücke:Basic, Extended und Perl-kompatibel. Wenn kein regulärer Ausdruckstyp angegeben ist, grep
Suchmuster als grundlegende reguläre Ausdrücke interpretieren.
Um nach mehreren Mustern zu suchen, verwenden Sie den OR-Operator (Alternation).
Der Wechseloperator |
(Pipe) ermöglicht es Ihnen, verschiedene mögliche Übereinstimmungen anzugeben, die wörtliche Zeichenfolgen oder Ausdruckssätze sein können. Dieser Operator hat die niedrigste Priorität aller regulären Ausdrucksoperatoren.
Die Syntax zum Suchen mehrerer Muster mit grep
grundlegende reguläre Ausdrücke sind wie folgt:
grep 'pattern1\|pattern2' file...
Schließen Sie den regulären Ausdruck immer in einfache Anführungszeichen ein, um die Interpretation und Erweiterung der Metazeichen durch die Shell zu vermeiden.
Bei der Verwendung einfacher regulärer Ausdrücke werden die Metazeichen als Literalzeichen interpretiert. Um die besondere Bedeutung der Metazeichen beizubehalten, müssen sie mit einem Backslash maskiert werden (\
). Aus diesem Grund maskieren wir den ODER-Operator (|
) mit einem Schrägstrich.
Um das Muster als erweiterten regulären Ausdruck zu interpretieren, rufen Sie grep
auf das -E
( oder --extended-regexp
) Möglichkeit. Wenn Sie einen erweiterten regulären Ausdruck verwenden, maskieren Sie |
nicht Betreiber:
grep -E 'pattern1|pattern2' file...
Weitere Informationen zum Erstellen regulärer Ausdrücke finden Sie in unserem Artikel Grep regex.
Grep Mehrere Strings #
Literale Strings sind die grundlegendsten Muster.
Im folgenden Beispiel suchen wir nach allen Vorkommen der Wörter fatal
, error
und critical
in der Nginx-Logerror-Datei:
grep 'fatal\|error\|critical' /var/log/nginx/error.log
Wenn die gesuchte Zeichenfolge Leerzeichen enthält, schließen Sie sie in doppelte Anführungszeichen ein.
Hier ist dasselbe Beispiel, das den erweiterten regulären Ausdruck verwendet, wodurch die Notwendigkeit entfällt, den Operator |
zu maskieren
grep -E 'fatal|error|critical' /var/log/nginx/error.log
Standardmäßig grep
unterscheidet zwischen Groß- und Kleinschreibung. Das bedeutet, dass Groß- und Kleinbuchstaben als unterschiedlich behandelt werden.
Um die Groß-/Kleinschreibung bei der Suche zu ignorieren, rufen Sie grep with
auf das -i
Option (oder --ignore-case
):
grep -i 'fatal\|error\|critical' /var/log/nginx/error.log
Wenn Sie nach einer Zeichenfolge suchen, grep
zeigt alle Zeilen an, in denen die Zeichenfolge in größere Zeichenfolgen eingebettet ist. Wenn Sie also nach „Fehler“ gesucht haben, grep
druckt auch die Zeilen, in denen „error“ in größere Wörter eingebettet ist, wie „errorless“ oder „antiterrorists“.
Um nur die Zeilen zurückzugeben, in denen die angegebene Zeichenfolge ein ganzes Wort ist (umschlossen von Nicht-Wort-Zeichen), verwenden Sie -w
( oder --word-regexp
) Option:
grep -w 'fatal\|error\|critical' /var/log/nginx/error.log
Wortzeichen umfassen alphanumerische Zeichen (a-z, A-Z und 0-9) und Unterstriche (_). Alle anderen Zeichen werden als Nichtwortzeichen betrachtet.
Weitere Einzelheiten zu grep
Optionen finden Sie in unserem Artikel Grep-Befehl.
Schlussfolgerung #
Wir haben Ihnen gezeigt, wie Sie grep
ausführen um nach mehreren Mustern, Zeichenketten und Wörtern zu suchen.
Wenn Sie Fragen oder Feedback haben, können Sie gerne einen Kommentar hinterlassen.