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
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 ejemplo90C192X142R138
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ó.
-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.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