Expresión regular para monitorear errores HTTP en registros de Apache

Expresión regular para monitorear errores HTTP en registros de Apache

Estoy buscando una expresión regular que pueda usar para buscar errores HTTP en mis archivos de registro estándar de Apache.

Me interesa hacer coincidir todas las líneas quenotener un estado de devolución HTTP 200 o HTTP 204.

Puedo unir las líneas quehacercontener código de retorno HTTP 204 o HTTP 200

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

Pero me gustaría tener lo contrario. También estoy seguro de que la expresión anterior se puede optimizar.

Necesito enviar dicha expresión regular a un programa externo, por lo que usarla grep -vpara invertirla no es una opción.

Respuesta1

Las expresiones regulares ordinarias no incluyen una forma de negar nada excepto un solo carácter, por lo que creo que tendrás que proporcionar la lista completa de códigos que deseas:

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

Los RE compatibles con Perl le permiten negar cadenas de texto, por lo que si los estuviera usando, podría usar

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

Respuesta2

El -vmodificador te proporciona todas las líneas que no coinciden, entonces:

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

información relacionada