Me gustaría encontrar todo las coincidencias del texto que tengo en un archivo ('file1.txt') que se encuentran en otro archivo ('file2.txt') usando la opción grep -f, que le dice que lea las expresiones que se encuentran en el archivo.

'file1.txt'

Una

Una

'file2.txt'

Una

Cuando ejecuto el comando:

Grep -f archivo1.txt archivo2.txt -w

Solo obtengo una vez la salida de la 'a'. en cambio, me gustaría obtenerlo dos veces, porque ocurre dos veces en mi archivo 'file1.txt'. ¿Hay alguna manera de permitir que grep (o cualquier otra herramienta unix / linux) genere una coincidencia para cada línea que lea? Gracias por adelantado. Arturo

0
Arturo 24 mar. 2017 a las 11:59

2 respuestas

La mejor respuesta

Grep funciona según lo diseñado, dando solo una línea de salida. Podría usar otro enfoque:

while IFS= read -r pattern; do
    grep -e $pattern file2.txt
done < file1.txt

Esto usaría cada línea en file1.txt como patrón para el grep, lo que da como resultado el resultado que está buscando.

0
Remko 24 mar. 2017 a las 09:19

Cuando usas

grep -f pattern.txt file.txt

Significa hacer coincidir el patrón encontrado en pattern.txt en el archivo file.txt.

Le está dando una sola salida porque eso es todo lo que hay en el segundo archivo.

Intenta intercambiar los archivos,

grep -f file2.txt file1.txt -w

¿Responde esto a tu pregunta?

0
ar7 24 mar. 2017 a las 09:12