Ich habe mich gefragt, ob es eine beste 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 versucht,

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

, aber es funktioniert nicht.

Antwort

zwei weitere Optionen

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

und Annahme fester Zeichenfolgen

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

Antwort

grep benötigt nicht unbedingt eine Eingabe von einer Pipe, daher können Sie

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

Großbuchstabe E schaltet den Modus für reguläre Ausdrücke ein und in diesem Fall müssen Punkte maskiert werden.

Kommentare

  • Das sollte sein -E aktiviert den erweiterten regulären Ausdrucksmodus, der den Wechsel | von Mustern ermöglicht. grep ohne -E hat reguläre Ausdrücke und Punkte sind aussagekräftig. Die Punkte sollten im Questio maskiert worden sein n, aber es ist ' unwahrscheinlich, dass die Zahlenfolge sowieso mit irgendetwas anderem übereinstimmt. grep -f deaktiviert reguläre Ausdrücke.
  • Die Punkte sollten auf jeden Fall maskiert werden. Das angegebene Beispiel (in OP und Antwort) würde mit 190.192.142.138 übereinstimmen. 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 ", " um die Dinge klar zu machen: grep -vE ',90\.192\.142\.138,|PIX|Intrusion' cisco.log-20151103.log

Antwort

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

Kommentare

  • Seit dem . passt zu jedem Zeichen, das auch z 90C192X142R138 und das hat das OP nicht gefragt. Sie sollten Sonderzeichen (Regex) maskieren.

Antwort

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

Kommentare

  • Das funktioniert einwandfrei. ' Ich bin mir nicht sicher, warum jemand es abgelehnt hat.

Schreibe einen Kommentar

Deine E-Mail-Adresse wird nicht veröffentlicht. Erforderliche Felder sind mit * markiert.