Comment utiliser grep pour afficher les lignes entourant chaque correspondance ?

Lorsqu’il s’agit de rechercher dans des fichiers sous un système d’exploitation Linux ou de type Unix, grep est un utilitaire de ligne de commande inestimable. Cependant, parfois, vous avez besoin de plus que simplement les lignes correspondantes ; vous voulez voir le contexte entourant ces correspondances. Cet article de blog vous guidera sur la façon de montrer les lignes précédentes et suivantes entourant chaque ligne correspondante à l’aide de grep.

Le problème

Vous avez un fichier et vous souhaitez rechercher des termes ou des motifs spécifiques. Trouver simplement ces correspondances n’est pas suffisant - vous voulez également voir les lignes qui apparaissent avant et après les lignes correspondantes. Par exemple, si vous surveillez un fichier journal pour certains messages d’erreur, le contexte autour de ces erreurs peut être tout aussi important.

La solution

Utilisation des options -B et -A

Dans grep, vous pouvez utiliser les options -B et -A pour contrôler combien de lignes avant et après chaque correspondance vous souhaitez voir :

  • -B num : Cette option spécifie le nombre de lignes à afficher avant la ligne correspondante.
  • -A num : Cette option spécifie le nombre de lignes à afficher après la ligne correspondante.

Commande d’exemple

Pour illustrer, supposons que vous souhaitez trouver des occurrences du terme foo dans un fichier nommé README.txt et que vous souhaitez voir 3 lignes avant et 2 lignes après chaque correspondance. Voici comment vous structureriez votre commande :

grep -B 3 -A 2 foo README.txt
  • Ce que cette commande fait :
    • Elle recherche le mot-clé foo dans README.txt.
    • Affiche 3 lignes précédant chaque occurrence de foo.
    • Montre 2 lignes suivant chaque occurrence.

Utilisation de l’option -C

Si vous souhaitez montrer le même nombre de lignes avant et après chaque correspondance, grep a également une option pratique pour cela :

  • -C num : Cette option vous permet de spécifier combien de lignes afficher avant et après la ligne correspondante.

Commande d’exemple

Pour afficher 3 lignes avant et après chaque correspondance de foo, utilisez la commande suivante :

grep -C 3 foo README.txt
  • Ce que cette commande fait :
    • Recherche foo dans README.txt.
    • Affiche 3 lignes avant et après chaque occurrence de foo.

Conclusion

Utiliser efficacement les options -B, -A et -C vous permet d’extraire un contexte significatif de vos recherches. Que vous soyez en train de résoudre des problèmes dans des journaux ou simplement d’analyser un fichier texte, être capable de voir les lignes entourant vos correspondances fournit des informations précieuses.

Maintenant que vous savez comment trouver des correspondances avec des lignes environnantes en utilisant grep, essayez-le lors de votre prochaine recherche de fichier !