Il y a une question similaire dans Preserve ls coloration après grep'ing mais cela m'ennuie que si vous redirigez la sortie de grep colorée dans un autre grep, la coloration ne soit pas conservée.
A titre d'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?
Réponses:
grep
désactive parfois la sortie couleur, par exemple lors de l'écriture dans un tube. Vous pouvez remplacer ce comportement avecgrep --color=always
La ligne de commande correcte serait
C'est assez verbeux, sinon vous pouvez simplement ajouter la ligne
à votre
.bashrc
par exemple et utilisezcgrep
comme grep coloré. Lors de la redéfinition,grep
vous pourriez rencontrer des problèmes avec les scripts qui reposent sur une sortie spécifiquegrep
et n'aiment pas le code d'échappement ascii.la source
grep
.alias grep='grep --color=auto
donc je dois simplement modifier mon~/.bashrc
endroit où il a été défini en premier lieu.Un mot de conseil:
Lors de l'utilisation
grep --color=always
, les chaînes réelles transmises au tube suivant seront modifiées. Cela peut conduire à la situation suivante:Même si l'option
-ve '12'
doit exclure la ligne médiane, ce n'est pas le cas car il y a des caractères de couleur entre1
et2
.la source
--color=auto
, cela devrait prendre en compte le fait que vous l'avez diffusé ailleurs et supprimer complètement les couleurs, mais cela va à l'encontre de l'objectif. Si vous voulez toujours des résultats colorés, je suppose que vous pouvez le grep à nouveau au dernier tube utilisant--color
.--color=always
fonctionne, avec, je suppose, les mises en garde énoncées ci-dessus.Répétez simplement la même commande grep à la fin de votre pipe.
grep WORD * | grep -v AVOID | grep -v AVOID2 | grep WORD
la source
grep -v AVOID * | grep WORD