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
2 respuestas
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.
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?
Nuevas preguntas
grep
grep es una utilidad de búsqueda de texto de línea de comandos originalmente escrita para Unix. Utiliza expresiones regulares para hacer coincidir el texto, y se usa comúnmente como filtro en las tuberías. Use esta etiqueta solo si su pregunta se relaciona con la programación mediante grep o API basadas en grep. Las preguntas relacionadas con el uso o la solución de problemas de las opciones de línea de comandos grep en sí están fuera de tema.