web-dev-qa-db-fra.com

grep: affiche toutes les sorties mais met en évidence les correspondances de recherche

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
14
ewok

Ajoutez l’option -z à votre commande GNU grep:

cat testfile | grep --color=always -z 'hello'

ou plus court

grep --color=always -z 'hello' testfile
16
Cyrus

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é.

12
bot779