L'une des commandes puissantes et largement utilisées dans le shell est grep. Il recherche dans un fichier d'entrée et fait correspondre les lignes dans lesquelles le motif donné est trouvé. Par défaut, tous les motifs correspondants sont imprimés sur stdout qui est généralement terminal. Nous pouvons également rediriger la sortie correspondante vers d'autres flux tels que file.
L'utilisation de base de grep est la suivante :
$ grep "some text" file.txt
grep est capable de surligner en couleur la chaîne correspondante dans sa sortie. Mais, par défaut, cette option est désactivée.
$ grep abc a_file.txt abcdef
La —-couleur Le paramètre indique à grep de colorer les termes de recherche dans la sortie, ce qui les aide à se démarquer parmi tous les autres textes sur la ligne. Vous choisissez la couleur que vous voulez en utilisant le GREP_COLOR variable d'environnement :export GREP_COLOR=36 vous donne du cyan et export GREP_COLOR=32 vous donne du vert citron.
3 options de couleurs s'offrent à vous :
- –color=auto
- –color=toujours
- –color=jamais
Avec color=always, il colore la chaîne correspondante.
$ grep --color=always abc a_file.txt abcdef
Très souvent, vous souhaitez parcourir la sortie :
$ grep --color=always abc a_file.txt | less ESC[01;31mabcESC[00mdef (END)
Le problème est que less ne comprend pas ces caractères de contrôle, par défaut. Vous devez utiliser le paramètre -R.
$ grep --color=always abc a_file.txt |less -R abcdef
Sinon, utilisez plus.
$ grep --color=always abc a_file.txt | more abcdef
Un autre scénario problématique est lorsque vous souhaitez enregistrer la sortie grep dans un fichier. Le fichier de sortie contiendra ces caractères de contrôle.
$ grep --color=always abc a_file.txt > myoutput.txt $ less myoutput.txt ESC[01;31mabcESC[00mdef myoutput.txt (END)
Avec color=auto, il affiche la couleur dans la sortie à moins que la sortie ne soit redirigée vers une commande ou redirigée vers un fichier.
Enfin, vous pouvez spécifier le paramètre de couleur dans une variable d'environnement spécifique à grep. Ensuite, vous n'avez pas à le saisir dans la ligne de commande.
$ export GREP_OPTIONS='--color=always'
Remarque finale
La commande grep est l'une des commandes les plus utiles et les plus puissantes de l'arsenal Terminal. Son principe est simple :étant donné un ou plusieurs fichiers, imprimez toutes les lignes de ces fichiers qui correspondent à un modèle d'expression régulière particulier. Pour mettre en surbrillance le motif correspondant, utilisez l'option -color. Bien que la position de l'option n'ait pas d'importance, la convention est de placer les options en premier.