Cómo hacer grep con una lista de palabras


81

Tengo un archivo A con 100 palabras separadas por nuevas líneas. Me gustaría buscar el archivo B para ver si ALGUNA de las palabras del archivo A aparece en él.

Intenté lo siguiente pero no me funciona:

grep -F A B

Respuestas:


112

Necesitas usar la opción -f:

$ grep -f A B

La opción -Frealiza una búsqueda de cadena fija donde -festá para especificar un archivo de patrones. Es posible que desee ambos si el archivo solo contiene cadenas fijas y no expresiones regulares.

$ grep -Ff A B

Es posible que también desee la -wopción de hacer coincidir solo palabras completas:

$ grep -wFf A B

Lea man greppara obtener una descripción de todos los posibles argumentos y lo que hacen.


4
¿-F es solo una optimización si no desea usar expresiones regulares?
Phoenix

¿Qué hay de encontrar todas las apariciones de palabras en el archivo A en un árbol de directorios B , enumerando solo los nombres de archivo de todas las coincidencias en B?
Zealoushacker

2

Para encontrar una lista muy larga de palabras en archivos grandes, puede ser más eficiente usar egrep:

remove the last \n of A
$ tr '\n' '|' < A > A_regex
$ egrep -f A_regex B
Al usar nuestro sitio, usted reconoce que ha leído y comprende nuestra Política de Cookies y Política de Privacidad.
Licensed under cc by-sa 3.0 with attribution required.