하나의 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

관련 정보