[regex] grep (foo를 포함하지 않는 매치 라인)을 이용한 네거티브 매칭

이 명령의 구문을 해결하려고 노력했습니다.

grep ! error_log | find /home/foo/public_html/ -mmin -60

또는:

grep '[^error_log]' | find /home/baumerf/public_html/ -mmin -60

이름이 지정된 파일을 제외하고 수정 된 모든 파일을 확인해야합니다 error_log.

나는 그것에 대해 읽었 지만 하나의 not정규식 패턴 만 발견했습니다 .



답변

grep -v 당신의 친구입니다:

grep --help | grep invert  

-v, –invert-match 일치하지 않는 행을 선택합니다

또한 관련 항목 -L()을 확인하십시오 -l.

일치하지 않는 -L, –files- 만 일치하지 않는 파일 이름 만 인쇄


답변

awk보다 복잡한 방식으로보다 명확한 검사를 수행 할 수 있으므로 다음과 같은 목적으로 도 사용할 수 있습니다 .

포함하지 않는 줄 foo:

awk '!/foo/'

어느 쪽도 포함하지 않는 라인 foobar:

awk '!/foo/ && !/bar/'

어느 쪽도 포함하지 않는 라인 foobar하나 포함 foo2또는 bar2:

awk '!/foo/ && !/bar/ && (/foo2/ || /bar2/)'

등등.


답변

귀하의 경우에는 아마도 grep을 사용하고 싶지 않지만 대신 find 명령에 부정적인 조항을 추가하십시오.

find /home/baumerf/public_html/ -mmin -60 -not -name error_log

이름에 와일드 카드를 포함 시키려면 접미사가 .log 인 파일을 제외 시키려면 와일드 카드를 이스케이프 처리해야합니다.

find /home/baumerf/public_html/ -mmin -60 -not -name \*.log


답변