Möchte man mithilfe von grep nach mehreren Wörtern suchen, können diese verkettet werden.
Im Folgenden wird die nginx-Webserver Logdatei auf Fehler überprüft:
grep 'fatal\|error\|critical' /var/log/nginx/error.log
Die Verkettung erfolgt mithilfe des | Zeichens, welches mithilfe von \ escaped werden muss, da grep ohne weitere Angaben nur einfache Reguläre Ausdrücke unterstützt.
Alternativ kann man grep mit dem Parameter -E starten, um Reguläre Ausdrücke vollwertig zu interpretieren:
grep -E 'fatal|error|critical' /var/log/nginx/error.log
Wie üblich kann man Zeichenketten beim Aufruf von grep auch negieren. Dazu eignet sich der Parameter -v.
grep -E -v 'fatal|error|critical' /var/log/nginx/error.log
In obigen Beispiel würden alle Nachrichten bis auf Fehlermeldungen ausgegeben.
Kleine Korrektur: grep interpretiert das Pattern ohne -E als basic regular expression und dort muss | als | maskiert werden, nicht wegen der Shell, denn die interpretiert in einfache Hochkommas eingeschlossene Zeichenketten gar nicht.
Die Websoftware mag offenbar Backslashes nicht und hat den von der Maskierung verschluckt.
Danke Jens, da hast du natürlich recht. Artikel ist korrigiert.