172 votes

Préserver la coloration après le transfert de grep à grep

Il y a une question similaire dans Préserver la coloration après le grep mais cela me gêne que si vous transférez une sortie grep colorée dans un autre grep, la coloration n'est pas conservée.

Par exemple, grep --color WORD * | grep -v AVOID ne conserve pas la couleur de la première sortie. Mais pour moi, ls | grep FILE garde la couleur, pourquoi la différence?

189voto

Otto Allmendinger Points 11853

grep parfois désactive la sortie de la couleur, par exemple lors de l'écriture d'un tuyau. Vous pouvez remplacer ce comportement avec grep --color=always

La ligne de commande correcte serait

grep --color=always WORD * | grep -v AVOID

C'est assez verbeux, alternativement, vous pouvez simplement ajouter la ligne

alias cgrep="grep --color=always"

pour votre .bashrc par exemple et utiliser cgrep comme la couleur de grep. Lors de la redéfinition grep vous pourriez avoir des problèmes avec les scripts qui s'appuient sur la production spécifique de grep et n'aime pas ascii code d'échappement.

78voto

andersonvom Points 2905

Un mot de conseil:

Lorsque vous utilisez grep --color=always , les chaînes réelles transmises au canal suivant sont modifiées. Cela peut conduire à la situation suivante:

 $ grep --color=always -e '1' * | grep -ve '12'
11
12
13
 

Même si l'option -ve '12' devrait exclure la ligne médiane, ce ne sera pas le cas, car il y a des caractères de couleur compris entre 1 et 2 .

Prograide.com

Prograide est une communauté de développeurs qui cherche à élargir la connaissance de la programmation au-delà de l'anglais.
Pour cela nous avons les plus grands doutes résolus en français et vous pouvez aussi poser vos propres questions ou résoudre celles des autres.

Powered by:

X