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.