Cómo buscar con «grep» usando cadenas en un archivo

Contenidos

Bash Shell

Grep es una herramienta increíble para buscar en archivos de registro y obtener información útil, pero ¿qué sucede si desea buscar un archivo de registro usando una lista gigante de palabras clave de otro archivo? Por suerte, además tiene esa característica incorporada.

Esto me sucedió cuando quise extraer una lista de todas las URL solicitadas por un gran bloque de IP que atacaba abusivamente nuestro servidor. Después de identificar y crear la lista de mil direcciones IP, necesitaba extraer las URL del archivo de registro principal para identificar los recursos más solicitados.

Para hacer esto, querrá utilizar el argumento -f, que le posibilita especificar un archivo para la lista de patrones a buscar.

-f FILE, --file=FILE
    Obtain patterns from FILE, one per line.  The empty file
    contains zero patterns, and therefore  matches  nothing.
    (-f is specified by POSIX.)

Suponiendo que su conjunto de palabras clave o cadenas está en un archivo llamado «cadenas de búsqueda», puede utilizar el argumento en la línea de comando como en el siguiente ejemplo. Dado que esta búsqueda va a generar una tonelada de datos, la parte “> output.txt” del comando envía el resultado del comando a un archivo llamado output.txt que se puede analizar de forma separada.

grep -f searchstrings filetosearch > output.txt

El único problema con el uso del argumento -f es que grep intentará interpretar las palabras clave como si fueran patrones, lo que puede ralentizarlo al analizar un archivo extremadamente grande. Por eso, además puede especificar el parámetro -F, que le dice a grep que solo haga coincidencias exactas con las cadenas.

 -F, --fixed-strings
    Interpret PATTERN as a  list  of  fixed  strings,  separated  by
    newlines,  any  of  which is to be matched.  (-F is specified by
    POSIX.)

Entonces, el comando completo terminaría siendo más así:

grep -F -f searchstrings filetosearch > output.txt

Grep es una forma ridículamente poderosa de buscar archivos de registro, por lo que valdría la pena dedicar tiempo a revisar el archivo man.

Suscribite a nuestro Newsletter

No te enviaremos correo SPAM. Lo odiamos tanto como tú.