Quiero encontrar a cada línea de un archivo que contiene alguna de las cadenas a cabo en una columna de un archivo diferente.

He intentado

grep "$(awk '{ print $1 }' file1.txt)" file2.txt

pero eso solo salidas file2.txt en su totalidad.

Sé que he hecho esto antes con un patrón que encontré en este sitio, pero no puedo encontrar esa pregunta más.

  • El comando en el OP no lo que se supone. Mi problema era que el archivo1 había una línea en blanco que se envío el patrón «» grep, lo que provoca que encuentre cada línea en archivo2.
InformationsquelleAutor sans | 2011-04-27

3 Comentarios

  1. 8

    Veo en la OP comentario de que tal vez la pregunta ya no es una pregunta. Sin embargo, los siguientes ligera modificación se encargará de la línea en blanco de la situación. Sólo añadir una comprobación para asegurarse de que la línea tiene al menos un campo:

    grep "$(awk '{if (NF > 0) print $1}' file1)" file2

    Y si el archivo con los patrones es simplemente un conjunto de patrones por línea, a continuación, una versión mucho más simple de lo que es:

    grep -f file1 file2

    Que causa grep para el uso de las líneas en el archivo file1 como los patrones.

  2. 2

    No hay necesidad de utilizar grep cuando usted tiene awk

    awk 'FNR==NR&&NF{a[$0];next}($1 in a)' file2 file1

Dejar respuesta

Please enter your comment!
Please enter your name here