정규식을 사용한 Grep 파일

정규식을 사용한 Grep 파일

여러 개의 로그 줄이 포함된 파일이 있습니다.

'fail'이라는 단어가 포함되어 있지만 패턴은 포함되지 않은 파일을 반환하고 싶습니다.

Failed any test here _fr in Pro-any text here

따라서 여기에 포함된 경우: Pro의 _fr

그런 다음 실패라는 단어가 포함되어 있어도 해당 행을 무시하십시오.

답변1

이 테스트 파일을 고려해 보겠습니다.

$ cat >test.log
keep fail
omit fail  _fr in Pro-

기준과 일치하는 모든 라인을 찾으려면:

$ awk '/[fF]ail/ && ! /_fr in Pro-/' test.log
keep fail

기준과 일치하는 줄이 있는 파일 이름만 인쇄하려면 다음을 수행하세요.

$ awk '/[fF]ail/ && ! /_fr in Pro-/ {print FILENAME; exit}' *.log
test.log

작동 방식:

Awk는 암시적으로 파일을 한 줄씩 읽습니다. 조건은 /[fF]ail/ && ! /_fr in Pro-/을 포함 Fail하거나 fail포함하지 않지만 모든 행과 일치합니다 _fr in Pro-. awk에서는 &&논리적 AND를 의미하고 !논리적 아님을 의미합니다.

_fr in Pro-와 둘 다 거부_en in Pro-

다음 테스트 파일을 고려해보세요.

$ cat test.log
keep fail
omit fail  _fr in Pro-
omit fail  _en in Pro-

두 양식을 모두 거부하려면 다음 단계를 따르세요.

$ awk '/[fF]ail/ && ! /_(fr|en) in Pro-/' test.log
keep fail

관련 정보