다음 명령을 실행하는 가장 좋은 방법이 있는지 궁금합니다.

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" 

작동하지 않습니다.

답변

h2>

다른 두 가지 옵션

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 

Answer

grep은 반드시 파이프의 입력이 필요하지 않으므로 수행 할 수 있습니다.

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

대문자 E는 정규식 모드를 사용하며이 경우 점은 이스케이프해야합니다.

댓글

  • -E 확장 정규식 모드를 켜서 | 패턴을 대체 할 수 있습니다. grep는 정규식을 가지며 점은 의미가 있습니다. 점은 질문에서 이스케이프되어야합니다. n,하지만 ' 숫자 시퀀스가 어쨌든 다른 것과 일치 할 가능성은 낮습니다. grep -f는 정규 표현식을 끕니다.
  • 어떤 경우에도 점은 이스케이프되어야합니다. 주어진 예 (OP 및 답변)는 190.192.142.138와 일치합니다. 따라서 이상적으로는 가능한 경우 IP 주소 부분을 고정하거나 쉼표 ", " : grep -vE ',90\.192\.142\.138,|PIX|Intrusion' cisco.log-20151103.log

답변

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

댓글

  • . 이후 이것은 또한 일치하는 모든 문자와 일치합니다. 90C192X142R138 OP가 요청한 것이 아닙니다. 특수 (정규식) 문자를 이스케이프해야합니다.

Answer

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

댓글

  • 잘 작동합니다. ' 누군가 반대표를 던진 이유를 잘 모르겠습니다.

답글 남기기

이메일 주소를 발행하지 않을 것입니다. 필수 항목은 *(으)로 표시합니다