Der grep-Befehl durchsucht Dateien nach Textmustern. Oft reicht ein einzelnes Muster nicht aus. Mit dem OR-Operator | kannst du mehrere Muster in einer Suche kombinieren.
Syntax für mehrere Muster
Die grundlegende Syntax für die Suche nach mehreren Mustern:
grep 'muster1\|muster2\|muster3' datei
Der OR-Operator | verbindet die einzelnen Muster. Bei einfachen regulären Ausdrücken musst du den Operator mit einem Backslash \| maskieren.
Schließe das Suchmuster immer in einfache Anführungszeichen ein. Das verhindert, dass die Shell die Sonderzeichen interpretiert.
Erweiterte reguläre Ausdrücke
Mit der Option -E aktivierst du erweiterte reguläre Ausdrücke. Der OR-Operator braucht dann keinen Backslash:
grep -E 'muster1|muster2|muster3' datei
Diese Schreibweise ist lesbarer und weniger fehleranfällig.
Praktische Beispiele
Log-Dateien nach Fehlern durchsuchen
Suche nach verschiedenen Fehlerstufen in einer Log-Datei:
grep -E 'fatal|error|critical' /var/log/nginx/error.log
Alle Zeilen, die einen der drei Begriffe enthalten, werden ausgegeben.
Groß- und Kleinschreibung ignorieren
Mit der Option -i spielt die Schreibweise keine Rolle:
grep -Ei 'fatal|error|critical' /var/log/nginx/error.log
Jetzt findet grep auch “Error”, “ERROR” oder “Fatal”.
Nur ganze Wörter finden
Standardmäßig findet grep auch Teilübereinstimmungen. Der Begriff “error” würde auch in “errorless” oder “antiterrorists” gefunden.
Mit der Option -w beschränkst du die Suche auf ganze Wörter:
grep -Ew 'fatal|error|critical' /var/log/nginx/error.log
Ein Wort ist dabei eine Zeichenkette aus Buchstaben, Ziffern und Unterstrichen, umgeben von anderen Zeichen.
Mehrere Zeichenketten mit Leerzeichen
Falls ein Suchmuster Leerzeichen enthält, schließe das gesamte Muster in doppelte Anführungszeichen ein:
grep -E "connection refused|permission denied" /var/log/syslog
Zusammenfassung
Die wichtigsten Optionen für die Suche nach mehreren Mustern:
| Variante | Beschreibung |
|---|---|
grep 'a|b' datei | Einfache reguläre Ausdrücke |
grep -E 'a|b' datei | Erweiterte reguläre Ausdrücke |
-i | Groß-/Kleinschreibung ignorieren |
-w | Nur ganze Wörter |
Für komplexere Suchmuster bietet grep weitere Optionen. Eine Übersicht findest du im Artikel zum grep-Befehl.