Mettre en surbrillance un élément dans un Shell
Ne vous est-il jamais arrivé d’avoir eu besoin de mettre en surbrillance un élément dans un shell suite à un « cat », un « tail », etc tout en conservant le contexte ?
Si la réponse est « oui », voici deux solutions du même acabit permettant de parvenir à vos fins :
1ère solution utilisant Perl
Nous allons définir une fonction bash nommée « hl » (pour highlight) prenant en paramètre une expression rationnelle compatible Perl (une « PCRE ») capturant l’élément à mettre en surbrillance :
user@gnusquad:~$ function hl(){ perl -pe "s/($1)/e[1;42m$1e[0m/g" ; }
Voici quelques exemples d'utilisation :
user@gnusquad:~$ echo "GNU Squad" | hl GNU GNU Squad user@gnusquad:~$ echo "GNU Squad" | hl S.+d GNU Squad root@gnusquad:~# tail -f /var/log/apache2/access.log | hl 192.168.[0-9]+.[0-9]+ 192.168.0.3 - - [06/Feb/2009:22:51:18 +0100] "GET / HTTP/1.1" 304 - "http://blog.gnusquad.org/" ""
Je vous invite à lire le billet « Mettez de la couleur dans votre prompt » si vous souhaitez changer la couleur de surbrillance.
2ème solution utilisant grep
Même principe que précédemment : nous allons définir une fonction bash nommée « hl » prenant en paramètre une expression rationnelle compatible POSIX capturant l’élément à mettre en surbrillance :
user@gnusquad:~$ function hl(){ grep --color -C1000000 -E $1 ; }
Le résultat étant le même que la solution précédente, pas besoin de nouveaux exemples.
Notez cependant que cette solution est moins propre que la première à cause de l’option -C qui utilise un nombre magique (en fait celui-ci correspond au nombre de lignes à afficher avant et après le motif trouvé) mais est en contrepartie plus facile à lire…
Il ne vous reste plus qu’à mettre cette fonction dans votre fichier ~/.bashrc et le tour est joué !
À lire :