Il y a une question similaire dans Conserver la coloration ls après la grep’ing mais cela me dérange que si vous canalisez la sortie grep colorée dans une 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
gardez la couleur, pourquoi la différence?
grep
désactive parfois la sortie couleur, par exemple lors de l'écriture dans un tube. 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, sinon vous pouvez simplement ajouter la ligne
alias cgrep="grep --color=always"
à ton .bashrc
par exemple et utilisez cgrep
comme grep coloré. Lors de la redéfinition de grep
, vous pourriez rencontrer des problèmes avec les scripts qui reposent sur une sortie spécifique de grep
et n'aiment pas le code d'échappement ascii.
Un mot de conseil:
Lors de l'utilisation de grep --color=always
, les chaînes réelles transmises au canal suivant seront 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 entre 1
et 2
.
Répétez simplement la même commande grep à la fin de votre pipe.grep Word * | grep -v AVOID | grep -v AVOID2 | grep Word