1 つの grep コマンドで複数のパターンを除外する

1 つの 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

他の2つのオプション

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

関連情報