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.
-E
abwechselnd auf erweiterten regulären Ausdruck - Modus, der den Wechsel ermöglicht|
von Mustern.grep
ohne -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 -f
schaltet reguläre Ausdrücke aus.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
grep -vE "90.192.142.138|PIX|Intrusion" cisco.log-20151103.log
quelle
.
mit jedem Zeichen übereinstimmt, stimmt dies auch mit z. B. überein,90C192X142R138
und das hat das OP nicht verlangt. Sie sollten Sonderzeichen (Regex) entkommen.quelle