Apache ログの HTTP エラーを監視するための正規表現

Apache ログの HTTP エラーを監視するための正規表現

標準の Apache ログ ファイル内の HTTP エラーをスキャンするために使用できる正規表現を探しています。

私はすべての行を一致させることに興味がありますしないHTTP 200 または HTTP 204 の戻りステータスがあります。

私は、するHTTP 204 または HTTP 200 の戻りコードを含む

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

しかし、私はその逆を望みます。また、上記の式は最適化できると確信しています。

このような正規表現を外部プログラムに渡す必要があるため、grep -vそれを逆に使用することはできません。

答え1

通常の正規表現には、1 つの文字以外を否定する方法が含まれていないため、必要なコードのリスト全体を提供する必要があると思います。

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

Perl互換の正規表現では文字列を否定することができるので、それを使う場合は次のようにすればよい。

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

答え2

スイッチ-vは一致しないすべての行を返します。

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

関連情報