반응형
문자열을 포함하지 않는 그렙 정규식
grep
syslog 파일을 확인 하기 위해 정규식 패턴 목록을 전달하고 있습니다. 이들은 일반적으로 IP 주소 및 로그 항목과 일치합니다.
grep "1\.2\.3\.4.*Has exploded" syslog.log
"1\.2\.3\.4.*Has exploded"
루프에서 전달 하는 부분 과 같은 패턴 목록 이므로 "-v"를 전달할 수 없습니다.
위의 역을 수행하려고 혼란 스럽습니다. 특정 IP 주소와 오류가있는 NOT match line은 "! 1.2.3.4. * 폭발했습니다"는 1.2.3.4 이외의 다른 시스템에 대해 syslog 줄과 일치합니다. . 내가 있어야 일치하지에 IP를 포함 할 수 있습니다.
StackOverflor에서 다양한 유사한 게시물을 보았지만 사용할 수없는 정규식 패턴을 사용 grep
합니다. 누구나 실례를 제공 할 수 있습니까 grep
?
업데이트 : 이것은 이런 스크립트에서 발생합니다.
patterns[1]="1\.2\.3\.4.*Has exploded"
patterns[2]="5\.6\.7\.8.*Has died"
patterns[3]="\!9\.10\.11\.12.*Has exploded"
for i in {1..3}
do
grep "${patterns[$i]}" logfile.log
done
grep
일치, grep -v
반대를 수행합니다. "A와 일치하지만 B와 일치하지 않아야"하는 경우 일반적으로 파이프를 사용합니다.
grep "${PATT}" file | grep -v "${NOTPATT}"
(?<!1\.2\.3\.4).*Has exploded
부정적인 lookbehind (Perl regular expression)를 가지려면 -P로 이것을 실행해야하므로 명령은 다음과 같습니다.
grep -P '(?<!1\.2\.3\.4).*Has exploded' test.log
이 시도. 앞에 선행하는 행을 무시하려면 음수 비하인드를 사용합니다 1.2.3.4
. 희망이 도움이됩니다!
patterns[1]="1\.2\.3\.4.*Has exploded"
patterns[2]="5\.6\.7\.8.*Has died"
patterns[3]="\!9\.10\.11\.12.*Has exploded"
for i in {1..3}
do
grep "${patterns[$i]}" logfile.log
done
와 동일해야합니다
egrep "(1\.2\.3\.4.*Has exploded|5\.6\.7\.8.*Has died)" logfile.log | egrep -v "9\.10\.11\.12.*Has exploded"
참고 URL : https://stackoverflow.com/questions/10411616/grep-regex-not-tain-string
반응형
'development' 카테고리의 다른 글
.net 코드에서 테이블 값 매개 변수를 스토어드 프로 시저로 전달하는 방법 (0) | 2020.06.05 |
---|---|
SRC와 HREF의 차이점 (0) | 2020.06.05 |
PHP의 preg_match_all ()과 비슷한 JavaScript에서 정규 표현식으로 여러 항목을 일치시키는 방법은 무엇입니까? (0) | 2020.06.05 |
XSLT에서 if-else 문을 구현하는 방법은 무엇입니까? (0) | 2020.06.04 |
공개 / 개인 DSA 키 쌍을 어떻게 테스트합니까? (0) | 2020.06.04 |