Ausschließen mehrerer Muster mit einem grep-Befehl


9

Ich habe mich gefragt, ob es einen besten Weg 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.

Antworten:


7

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

10

grep benötigt nicht unbedingt eine Eingabe von einer Pipe, also könnten Sie dies tun

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

Großbuchstaben E schaltet den regulären Ausdrucksmodus ein und in diesem Fall müssen Punkte maskiert werden.


7
Das sollte -Eabwechselnd auf erweiterten regulären Ausdruck - Modus, der den Wechsel ermöglicht |von Mustern. grepohne -E hat reguläre Ausdrücke und Punkte sind sinnvoll. Die Punkte hätten in der Frage maskiert werden sollen, aber es ist unwahrscheinlich, dass die Zahlenfolge mit irgendetwas anderem übereinstimmt. grep -fschaltet reguläre Ausdrücke aus.
RobertL

Die Punkte sollten auf jeden Fall maskiert werden; das gegebene Beispiel (in OP und Antwort) würde übereinstimmen 190.192.142.138; Idealerweise sollte das IP-Adressstück nach Möglichkeit verankert sein oder ein beliebiges Trennzeichen vor der IP-Adresse in das Protokoll aufnehmen, wobei ein Komma "" angenommen wird, um die Dinge klarer zu machen:grep -vE ',90\.192\.142\.138,|PIX|Intrusion' cisco.log-20151103.log
Mark Stewart

2

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


Da das .mit jedem Zeichen übereinstimmt, stimmt dies auch mit z. B. überein, 90C192X142R138und das hat das OP nicht verlangt. Sie sollten Sonderzeichen (Regex) entkommen.
Anthon

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

Das funktioniert gut, ich bin mir nicht sicher, warum jemand es abgelehnt hat.
Joshua Goldberg
Durch die Nutzung unserer Website bestätigen Sie, dass Sie unsere Cookie-Richtlinie und Datenschutzrichtlinie gelesen und verstanden haben.
Licensed under cc by-sa 3.0 with attribution required.