1 votos

Quiere buscar ocurrencia de "error" cadena de caracteres en un archivo de registro, excepto en algunas cadenas que tiene "error"(debemos ignorar estas cadenas)

Quiero búsqueda de ocurrencia de "error" en el archivo de registro de usar si la condición y la impresión de que el error está presente en el archivo de registro. y si no está presente, debe imprimir el error de no encontrado. El problema aquí está en mi archivo de registro es, tengo alguna palabra que tiene el error como una subcadena, y quiero ignorar estas palabras, ya que no se cuentan como un error para ser considerado..

Words are :
"LocalErrorPagePolicy"
"ErrorMapping"
"CustomErrorPagePolicy"
"error=ForceYes"

And also i want to avoid one line where error occurs:
Error details may be seen in the file:

Y el resto de las apariciones de error debe ser considerado.

Cualquier ayuda, muy apreciada!

He intentado grep -v "string" nombre de archivo , no funciona.

0voto

MeerLin Puntos 61

Una (muy aproximado) enfoque es grep todos "error" ocurrencias: grep -i "error" FILENAME

Explicación:

  • -i: Filtro de Caso enminúsculas (RegEx equivalente es el /i flag)
  • "error": Filtro para el término "error"
  • FILENAME: El archivo de búsqueda en

A continuación, filtrar aquellos que no quieren:

grep -Eiv "(LocalErrorPagePolicy|ErrorMapping|CustomErrorPagePolicy|error=ForceYes|Error details may be seen in the file:)" FILENAME

Explicación:

  • -Eiv: La concatenación de múltiples parámetros, equivalente a grep -E -i -v
  • -E: Interpretar el patrón de una expresión regular extendida (ERE, ver man grep para más información)
  • -i: Filtro de Caso ensensibles
  • -v: Invertir el sentido de la coincidencia, seleccione la no-coincidencia de líneas.

Para el Patrón:

  • (): Entre paréntesis crear un grupo coincidentes
  • |: El carácter de canalización sirve como una lógica or

De esta forma se rompe hacia abajo para "encontrar PLAZO1 O TERM2 O ... O TERMX" y, a continuación, deseche las líneas donde los términos se encuentran.


Si sumamos las juntas, se obtiene:

grep -i "error" FILENAME | grep -Eiv (LocalErrorPagePolicy|ErrorMapping|CustomErrorPagePolicy|error=ForceYes|Error details may be seen in the file:)"


Para probar esto he creado un pequeño archivo ficticio:

LocalErrorPagePolicy
ErrorMapping
CustomErrorPagePolicy
error=ForceYes
Error details may be seen in the file:
Stackoverflowerror
I like errors
error error
LocalErrorErrorError
CustomErrorErrorPolicy
error=errorYes
I am a successfully output!

Resultado después de aplicar el grep-comando:

Stackoverflowerror
I like errors
error error
LocalErrorErrorError
CustomErrorErrorPolicy
error=errorYes

Como se puede ver, el no deseados términos que han sido filtrados correctamente.

EnMiMaquinaFunciona.com

EnMiMaquinaFunciona es una comunidad de administradores de sistemas en la que puedes resolver tus problemas y dudas.
Puedes consultar las preguntas de otros sysadmin, hacer tus propias preguntas o resolver las de los demás.

Powered by: