2016-11-04 1 views
0

내가 자동화 테스트를 실행 우분투를 사용하고,이 같은 다음과 같은 텍스트 로그 파일을 처리 할 필요가쉘을 사용하여 특정 문자열이 포함 된 줄을 제거하는 방법?

난 그냥 아래의 로그 파일을 "NOTIFY"를 얻을으로 2 줄을 제거 할
INVITE INVITE sip:[email protected]:5060 SIP/2.0 
INVITE SIP/2.0 100 Trying 
1154845 NOTIFY NOTIFY sip:[email protected]:5065 SIP/2.0 
1154845 NOTIFY NOTIFY SIP/2.0 200 OK 
INVITE SIP/2.0 180 Ringing 

, I 쉘에 익숙하지 않고 구글을 시험해 보았지만 길을 찾지 못했다. 어떻게 할 수 있니? 감사!

INVITE INVITE sip:[email protected]:5060 SIP/2.0 
INVITE SIP/2.0 100 Trying 
INVITE SIP/2.0 180 Ringing 
+1

'그렙 < "^ INVITE"우리가 선을 NOTIFY 포함 포함하지 않기 때문에, 우리는 지금과 같은 경기 전에 !을 넣어 log.txt'는'INVITE'로 시작하는 모든 줄을 제공합니다. – Ahmad

답변

3

다음을 시도해보십시오 :

grep -v "NOTIFY" filename.txt 

그렙은 일반적으로 특정 패턴과 일치하는 라인을 인쇄하는 데 사용되지만, "-v"옵션은 경기를 반전 할 수 있습니다; 패턴과 일치하는 줄을 제거합니다.

자세한 내용은 here입니다.

+0

이것은 내가 선호하는 방법입니다. +1 – zedfoxus

1

awk 방법 :

awk '!/NOTIFY/ {print $0}' filename 

설명

awk 라인이 /NOTIFY/으로 표시된 바와 같이 NOTIFY가 포함되어있는 경우 $0으로 표시 줄을 인쇄 할 예정이다.

sed 시도 - !/NOTIFY/

:

sed -n '/NOTIFY/!p' filename 
관련 문제