Grep es una herramienta increĂble para buscar en archivos de registro y extraer informaciĂłn Ăştil, pero ÂżquĂ© sucede si desea buscar un archivo de registro utilizando una lista gigante de palabras clave de otro archivo? Afortunadamente, tambiĂ©n tiene esa caracterĂstica incorporada.
Esto me sucedió cuando quise obtener una lista de todas las URL solicitadas por un gran bloque de IP que estaba atacando abusivamente nuestro servidor. Después de identificar y crear la lista de mil IP, necesitaba extraer las URL del archivo de registro principal para identificar los recursos más solicitados.
Para hacer esto querrás usar el argumento -f, que te permite especificar un archivo para la lista de patrones a buscar.
-f FILE, --file=FILEObtain 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 usar el argumento en la lĂnea de comando como en el siguiente ejemplo. Dado que esta bĂşsqueda generará una gran cantidad de datos, la parte “> salida.txt” del comando envĂa el resultado del comando a un archivo llamado salida.txt que se puede analizar por separado.
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 lo tanto, también puede especificar el parámetro -F, que le indica a grep que solo haga coincidencias exactas con las cadenas.
-F, --fixed-stringsInterpret 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 parecido a esto:
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.