Ausschließen mehrerer Muster mit einem Grep-Befehl

Ausschließen mehrerer Muster mit einem Grep-Befehl

Ich habe mich gefragt, ob es eine optimale Möglichkeit gibt, den folgenden Befehl auszuführen

cat cisco.log-20151103.log | grep -v "90.192.142.138" | grep -v "PIX" | grep -v "Intrusion"

Ich habe es versucht

cat cisco.log-20151103.log | grep -v "90.192.142.138|PIX|Intrusion"

aber es funktioniert nicht.

Antwort1

zwei weitere Optionen

grep -v -e 90.192.142.138 -e PIX -e Intrusion cisco.log-20151103.log

und unter der Annahme fester Zeichenfolgen

grep -vF '90.192.142.138
PIX
Intrusion
' cisco.log-20151103.log

Antwort2

grep benötigt nicht unbedingt eine Eingabe aus einer Pipe, daher könnten Sie Folgendes tun:

grep -vE '90\.192\.142\.138|PIX|Intrusion' cisco.log-20151103.log

Ein großes E aktiviert den regulären Ausdrucksmodus. In diesem Fall müssen Punkte maskiert werden.

Antwort3

grep -vE "90.192.142.138|PIX|Intrusion" cisco.log-20151103.log

Antwort4

$ grep -v -f exclude.list
$ cat exclude.list
90.192.142.138
PIX
Intrusion

verwandte Informationen