在Apache日志中监控HTTP错误的正则expression式

我正在寻找一个正则expression式,我可以用它来扫描标准apache日志文件中的HTTP错误。

我很有趣的是匹配所有没有 HTTP 200或HTTP 204返回状态的行。

我可以匹配包含HTTP 204或HTTP 200返回代码的行

grep 'HTTP[^"]*" 204 \| HTTP[^"]*" 200' 

但我想反过来。 我也确信上面的expression式可以被优化。

我需要提供这样的正则expression式到外部程序,所以使用grep -v来反转它不是一个选项。

普通的正则expression式不包括除单个字符以外的其他任何东西,所以我认为你必须提供你想要的所有代码:

 HTTP[^"]*" (1|20[12356]|3|4|5) 

与Perl兼容的RE允许你排除文本string,所以如果你正在使用那些你可以使用的

 HTTP[^"]*" (?!(200|204)) 

-v开关给你所有不匹配的行,所以:

 egrep -v 'HTTP[^"]*" (200|204)'