2011-08-11 13 views
19

Supongamos que hay un archivo de texto grande y me gustaría para imprimir sólo las líneas que no coinciden con algunos patrones. Obviamente, puedo usar egrep -v 'patter1|pattern2|pattern3. Ahora, ¿qué pasa si todos esos patrones están en un archivo de texto? ¿Cuál es la mejor manera de hacer egrep leer patrones del archivo?¿Cómo hacer patrones de lectura "grep" desde un archivo?

+0

Tenga en cuenta que a veces se necesita para escapar de la '|' ... por ejemplo, 'Grep pattern1' \ | patrón2 \ | pattern3'' – vikingsteve

Respuesta

28
grep -v -f pattern_file 
+0

Para futuras consultas: eliminar' -V' y sólo tiene que utilizar 'mi_archivo gato | grep -f pattern_file' lugar si se quiere mantener las líneas ** ** que responden a un patrón de el archivo de patrones – Basj

+0

¿Eh? Esto no es lo que pidió el OP. Además, es más eficiente que ** no ** 'cat' en' grep' - simplemente especifique 'myfile' como un argumento para' grep'. – lingfish

+0

@lingfish que debería haber declarado que su comentario se refiere simplemente a la observación de Basj y no mi respuesta ... – TMS

5

egrep tiene una opción -f que hace exactamente eso: especifica un archivo y lee los patrones de ese archivo, uno por línea.

Cuestiones relacionadas