76 votes

Afficher tous les résultats mais mettre en évidence les résultats de la recherche

En bash, si je veux exécuter une commande et n'afficher que les lignes de sortie qui correspondent à un certain modèle, je peux l'envoyer dans le tube suivant grep comme

fichier testfile

hello
there
my
friends

commande

$ cat testfile | grep 'hello'
hello #this will be highlightd

cela mettra en évidence la correspondance recherchée et affichera la ligne entière sur laquelle elle se trouve. Je peux utiliser -A y -B pour afficher les lignes avant et après cette ligne. Ma question est la suivante : est-il possible d'exécuter la commande et d'afficher tous les résultats comme d'habitude, mais de mettre en évidence les résultats de la recherche comme le ferait grep ? ainsi, mon résultat serait le suivant

hello #highlighted
there
my
friends

0voto

evpo Points 114

-z est bon pour sortir le fichier entier comme dans la réponse de bot779 mais la plupart du temps, vous devez contrôler le nombre de lignes que vous souhaitez inclure au-dessus et au-dessous de la correspondance. Vous pouvez contrôler la longueur du contexte avec -C <N> où N est le nombre de lignes du contexte. Voir l'exemple ci-dessous :

cat >testfile <<EOM
hello
there
my
friends
more
lines
to demonstrate
context
EOM

cat testfile | grep --color=always -C 2 friends

there
my
*friends* highlighted
more
lines

En utilisant un grand nombre comme -C 1000 peut également limiter la sortie si la sortie que vous filtrez est trop importante.

SistemesEz.com

SystemesEZ est une communauté de sysadmins où vous pouvez résoudre vos problèmes et vos doutes. Vous pouvez consulter les questions des autres sysadmins, poser vos propres questions ou résoudre celles des autres.

Powered by:

X