用於監控apache日誌中HTTP錯誤的正規表示式

用於監控apache日誌中HTTP錯誤的正規表示式

我正在尋找一個可用於掃描標準 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)'

相關內容