
여러 개의 로그 줄이 포함된 파일이 있습니다.
'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