Исключение нескольких шаблонов с помощью одной команды 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

Связанный контент