내가 갖고 싶은 지금 부두 액세스 로그egrep을
egrep '^.*? ".+? /admin/hb .*?".*?$' /m1/logs/ap*access*2013_03_19.log
나는 것에서 모든 GET/관리/HB 기록을 추출에서 좋은 일을 않는 egrep을 "GET/admin/hb"가 아닌 모든 행을 가져옵니다. ... 충분한 egrep을 -v와의 간단한
egrep -v '^.*? ".+? /admin/hb .*?".*?$' /m1/logs/ap*access*2013_03_19.log
... 내가 궁극적으로는 그루비 스크립트에이 expresion을 가하고되고 "/ 관리/HB"부분을 부정하는 방법을 알고 싶습니다하지만. 부정적인 lookaround에 나의 약한 시도는 실패했다; 그것은 전혀 줄을 일치시키지 않습니다.
egrep '^.*? ".+? ^(?!/admin/hb) .*?".*?$' /m1/logs/ap*access*2013_03_19.log
egrep에서/admin/hb와 일치하지 않는 모든 액세스 로그 행을 생성하려면 어떻게합니까?
테스트 데이터 세트가 다음과 같습니다. 나는이 솔루션은 다음 두 가지를 첫 번째 줄을 건너 뛸 수 있지만, 일치 할 것으로 예상 :
127.0.0.1 - - [20/Mar/2013:16:37:08 +0000] "GET /admin/hb HTTP/1.1" 200 105 4
10.23.68.60 - - [20/Mar/2013:16:37:08 +0000] "GET /$PIT$/AUS/admin/hb HTTP/1.1" 200 0 4
10.23.68.64 - - [20/Mar/2013:16:36:47 +0000] "GET /handsets/dmhc HTTP/1.1" 200 0 1
흠. 이 답변은 관련이 있지만 그것을 통합하는 방법을 알아낼 수 없습니다 : http://stackoverflow.com/questions/406230/regular-expression-to-match-string-not-containing-a-word –