0 votos

Buscando patrones en fichero muy grande

Tengo una lista de patrones en un fichero, algo más o menos así:

patron1
patron2
patron3
...

Y quiero buscar cada uno de esos patrones en otro fichero que es mucho más grande (25 GB), sé que cada uno de estos patrones se encuentra sólo una vez en el fichero grande.

Mi idea es utilizando grep y con un pequeño script de bash lo he podido conseguir:

#!/bin/bash
read -p "Introduzca el fichero que contiene la lista de patrones: " lista

for linea in $(cat $lista);
do
    grep -m1 -w $linea fichero_grande.txt
done

El programa funciona, pero el problema es que tarda mucho en terminar de hacer todas las búsquedas...

Me han comentado que utilizando un grep -f se lee el archivo de patrones, se buscan todas las lineas al mismo tiempo y puede hacerse la búsqueda más ágil:

grep -w -f fichero_con_patrones.txt fichero_grande.txt 

Pero una vez encuentra la primera coincidencia del primer patrón, sigue buscando ese mismo patrón en el resto del fichero (que es demasiado grande) y la búsqueda se ralentiza un montón.

He probado con la opción -m 1 para que una vez encuentre la primera coincidencia pare y empiece a buscar el siguiente patrón:

grep -w -m1 -f fichero_con_patrones.txt fichero_grande.txt 

Pero no funciona, ya que una vez encuentra la primera coincidencia del primer patrón, para de ejecutarse el comando...

¿Hay alguna forma de utilizar el grep -f y que una vez a encontrado el primer patrón deje de buscar y siga con el resto de patrones?

¿O hay alguna otra forma de buscar patrones que sea más rápida?

Iteramos.com

Iteramos es una comunidad de desarrolladores que busca expandir el conocimiento de la programación mas allá del inglés.
Tenemos una gran cantidad de contenido, y también puedes hacer tus propias preguntas o resolver las de los demás.

Powered by: