표준 Apache 로그 파일에서 HTTP 오류를 검색하는 데 사용할 수 있는 정규식을 찾고 있습니다.
나는 모든 라인을 일치시키는 것이 흥미 롭습니다.~하지 않다HTTP 200 또는 HTTP 204 반환 상태가 있습니다.
나는 그 라인을 일치시킬 수 있습니다하다HTTP 204 또는 HTTP 200 반환 코드를 포함합니다.
grep 'HTTP[^"]*" 204 \| HTTP[^"]*" 200'
그러나 나는 그 반대를 원합니다. 또한 위의 표현이 최적화될 수 있다고 확신합니다.
이러한 정규식을 외부 프로그램에 공급해야 하므로 grep -v
이를 역으로 사용하는 것은 옵션이 아닙니다.
답변1
일반 정규식에는 단일 문자를 제외한 모든 것을 부정하는 방법이 포함되어 있지 않으므로 원하는 전체 코드 목록을 제공해야 할 것입니다.
HTTP[^"]*" (1|20[12356]|3|4|5)
Perl 호환 RE를 사용하면 텍스트 문자열을 부정할 수 있으므로 이를 사용하는 경우 사용할 수 있습니다.
HTTP[^"]*" (?!(200|204))
답변2
스위치 -v
는 일치하지 않는 모든 줄을 제공하므로 다음과 같습니다.
egrep -v 'HTTP[^"]*" (200|204)'