¿Existe una forma más sencilla de hacer esto? grep -v foo file | grep -v bar
Probablemente hay formas muy elegantes de hacerlo con egrep, pero ¿cómo ir con grep simple y llano?
EDITAR: grep -v "foo\|bar" file
parece funcionar solo con GNU grep. Estoy en Solaris. ¿Alguna solución para eso?
Comentarios
Responder
Puede tener varias pruebas en una solo grep
comando pasando cada expresión con un argumento -e
en lugar de como el primer argumento que no es de opción como normalmente ve:
$ grep -v -e foo -e bar file
Eso dice lo mismo que dice tu comando: imprime líneas de file
que no contienen «foo» ni «bar» .
Tenga en cuenta que eliminar -v
invierte completamente esto; ¡También cambia la operación lógica! Obtiene todas las líneas que contienen «foo» o «bar».
Respuesta
grep -Ev "word1|word2"
debería funcionar bien
Comentarios
- Como alternativa, puede usar egrep y soltar la barra invertida para carácter de tubería:
egrep -v 'word1|word2
- Resulta que esto no funciona con el grep de Solaris. Instalé el grep GNU y funcionó perfectamente. ' voy a editar mi pregunta para que sea específica de Solaris.
- @rahmu
\|
es un grep GNU extensión, pero puede lograr lo mismo de forma portátil con-E
y el operador|
.
-v
es una negación.not(A or B) == not(A) and not(B)