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.

Federi
quelle

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
iruvar
quelle
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.

runcz
quelle
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

Vinz
quelle
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
cgood
quelle
Das funktioniert gut, ich bin mir nicht sicher, warum jemand es abgelehnt hat.
Joshua Goldberg