標準の 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)'