使用一個 grep 指令排除多個模式

使用一個 grep 指令排除多個模式

我想知道是否有運行以下命令的最佳方法

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

我試過

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

但它不起作用。

答案1

另外兩個選擇

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

並假設固定字串

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

答案2

grep 不一定需要來自管道的輸入,所以你可以這樣做

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

大寫 E 開啟正規表示式模式,在這種情況下需要轉義點。

答案3

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

答案4

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

相關內容