Me preguntaba si hay una mejor manera de ejecutar el siguiente comando

cat cisco.log-20151103.log | grep -v "90.192.142.138" | grep -v "PIX" | grep -v "Intrusion" 

Intenté

cat cisco.log-20151103.log | grep -v "90.192.142.138|PIX|Intrusion" 

pero no funciona.

Respuesta

otras dos opciones

grep -v -e 90.192.142.138 -e PIX -e Intrusion cisco.log-20151103.log 

y asumiendo cadenas fijas

grep -vF "90.192.142.138 PIX Intrusion " cisco.log-20151103.log 

Respuesta

grep no necesita necesariamente la entrada de una tubería, por lo que podría hacerlo

grep -vE "90\.192\.142\.138|PIX|Intrusion" cisco.log-20151103.log 

La E mayúscula cambia al modo de expresión regular y los puntos deben escaparse en este caso.

Comentarios

  • Eso debería ser -E activa el modo de expresión regular Extendido , que permite la alternancia | de patrones. grep sin -E tiene expresiones regulares y los puntos son significativos. Los puntos deberían haberse escapado en la búsqueda. n, pero ' es poco probable que la secuencia de números coincida con cualquier otra cosa de todos modos. grep -f desactiva las expresiones regulares.
  • Los puntos deben ser de escape en cualquier caso; el ejemplo dado (en OP y respuesta) coincidiría con 190.192.142.138; así que lo ideal es que la parte de la dirección IP esté anclada si es posible, o incluir el delimitador que esté antes de la dirección IP en el registro, suponiendo una coma ", " para aclarar las cosas: grep -vE ',90\.192\.142\.138,|PIX|Intrusion' cisco.log-20151103.log

Responder

grep -vE "90.192.142.138|PIX|Intrusion" cisco.log-20151103.log

Comentarios

  • Dado que el . coincide con cualquier carácter que también coincida, por ejemplo 90C192X142R138 y eso no es lo que pidió el OP. Debe escapar de los caracteres especiales (regex).

Respuesta

$ grep -v -f exclude.list $ cat exclude.list 90.192.142.138 PIX Intrusion 

Comentarios

  • Esto funciona bien, yo ' no estoy seguro de por qué alguien lo rechazó.

Deja una respuesta

Tu dirección de correo electrónico no será publicada. Los campos obligatorios están marcados con *