dans bash, si je veux exécuter une commande et n’afficher que les lignes de sortie correspondant à un certain modèle, je peux le diriger vers grep
, comme
fichier de test
hello
there
my
friends
commander
$ cat testfile | grep 'hello'
hello #this will be highlightd
cela mettra en évidence la correspondance de recherche et affichera toute la ligne sur laquelle elle tombe. Je peux utiliser -A
et -B
pour afficher les lignes avant et après cette ligne. Ma question est est-il possible d'exécuter la commande et d'afficher toutes les sorties comme d'habitude, mais mettre en évidence les correspondances de recherche comme le ferait grep? donc ma sortie serait
hello #highlighted
there
my
friends
Ajoutez l’option -z
à votre commande GNU grep:
cat testfile | grep --color=always -z 'hello'
ou plus court
grep --color=always -z 'hello' testfile
Pour utiliser un GREP couleur afin de ne mettre en évidence que les motifs correspondants mais sans modifier autrement le résultat:
grep --color=always -e "^" -e "hello" testfile
Le premier motif correspond à toutes les lignes (toutes les lignes seront imprimées); le deuxième motif (et tous les motifs suivants) font que le texte correspondant est mis en surbrillance.
Étant donné que le premier motif correspond à toutes les lignes mais ne correspond pas à un caractère imprimable, il n’ajoute aucune mise en surbrillance des couleurs et n’interfère donc pas avec la lisibilité du texte surligné.