Pour cela, il suffit de rediriger un flux vers grep de cette façon :
cat monfichier | grep -E --color 'PATT3RN|$'
Ainsi, l'ensemble du texte d'origine est affiché. Et si le pattern apparaît, celui-ci apparaît en couleur.
Par exemple, dans le cas où l'on souhaite afficher l'arbre des dépendances d'un module maven, et qu'on cherche quelles dépendances dépendent de slf4j :
mvn dependency:tree | grep -E --color 'slf4j|$'
Note : Sans le |$, seules les lignes contenant le pattern sont affichées.
Pour chercher une chaine de caractères dans un répertoire de façon récursive :
grep -rl "string" "$PATH"
Une option bien utile de l'outil grep.
Je veux chercher un motif dans un fichier texte. Mais je veux également afficher un certain nombre de lignes avant/après ce motif. J'utilise le fichier suivant :
Lorem ipsum dolor sit amet, consectetur adipiscing elit.
Nulla et vehicula lectus.
Integer sit amet augue est.
Vivamus vestibulum pretium ex.
Praesent in nunc nec turpis aliquam porttitor.
Etiam leo quam, bibendum nec velit eget, aliquam malesuada justo.
Aliquam sit amet dapibus enim.
Proin eget velit vehicula, vulputate augue eget, maximus diam.
Aenean pellentesque, nisi id viverra tempor, neque dui lacinia nisi, et ultricies nunc turpis at mauris.
Pour cela, j'utilise les options -A et -B de grep ainsi :
# En plus du motif recherché, j'affiche 2 lignes au-dessus et 3 lignes en-dessous
cat mon_fichier | grep -E " turpis aliquam " -A3 -B2
Ce qui me donne
Integer sit amet augue est.
Vivamus vestibulum pretium ex.
Praesent in nunc nec turpis aliquam porttitor.
Etiam leo quam, bibendum nec velit eget, aliquam malesuada justo.
Aliquam sit amet dapibus enim.
Proin eget velit vehicula, vulputate augue eget, maximus diam.
Il faut lire ces options comme :
Le nombre qui les suit indique le nombre de lignes à garder avant/après.
Si le nombre de lignes à garder avant/après est le même, alors je peux utiliser l'option -C :
# En plus du motif recherché, j'affiche 1 ligne au-dessus et en-dessous
cat mon_fichier | grep -E "amet dapibus" -C1
Ce qui me donne
Etiam leo quam, bibendum nec velit eget, aliquam malesuada justo.
Aliquam sit amet dapibus enim.
Proin eget velit vehicula, vulputate augue eget, maximus diam.