我正在寻找一个正则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)'