Grep est un outil formidable pour rechercher dans les fichiers journaux et extraire des informations utiles, mais que faire si vous voulez rechercher un fichier journal en utilisant une liste géante de mots-clés d'un autre fichier ? Heureusement, cette fonctionnalité est également intégrée.
Cela m'est arrivé lorsque je voulais extraire une liste de toutes les URL demandées par un énorme bloc d'adresses IP qui attaquait abusivement notre serveur. Après avoir identifié et créé la liste des mille adresses IP, je devais extraire les URL du fichier journal principal pour identifier les ressources les plus demandées.
Pour ce faire, vous devrez utiliser le -f argument, qui vous permet de spécifier un fichier pour la liste des modèles à rechercher.
-f FICHIER, –file=FILE Obtient des modèles à partir de FICHIER, un par ligne. Le fichier vide ne contient aucun motif et ne correspond donc à rien. (-f est spécifié par POSIX.)
En supposant que votre ensemble de mots-clés ou de chaînes se trouve dans un fichier nommé “searchstrings”, vous pouvez utiliser l'argument sur la ligne de commande comme dans l'exemple suivant. Étant donné que cette recherche va générer une tonne de données, le “> sortie.txt” une partie de la commande envoie le résultat de la commande dans un fichier appelé output.txt qui peut être analysé séparément.
grep -f searchstrings filetosearch > output.txt
Le seul problème avec l'utilisation de l'argument -f est que grep va tenter d'interpréter les mots-clés comme s'il s'agissait de modèles, ce qui peut le ralentir lors de l'analyse d'un fichier extrêmement volumineux. Vous pouvez donc également spécifier le paramètre -F, qui indique à grep de ne faire que des correspondances exactes avec les chaînes.
-F, –fixed-strings Interpréter PATTERN comme une liste de chaînes fixes, séparées par des sauts de ligne, dont doit être égalé. (-F est spécifié par POSIX.) Publicité
Donc, la commande complète ressemblerait plutôt à ceci :
grep -F -f searchstrings filetosearch > output.txt
Grep est un moyen ridiculement puissant de rechercher des fichiers journaux, cela vaudrait donc la peine de parcourir le fichier man.