Préserver la coloration après la tuyauterie grep de grep
Il y a un simlar question dans Préserver ls coloration utilisant la commande grep avec mais ça m'énerve que si vous pipe de couleur grep sortie dans un autre grep que la coloration n'est pas conservé.
Comme un exemple grep --color WORD * | grep -v AVOID
ne pas garder la couleur de la première sortie. Mais pour moi ls | grep FILE
faire garder la couleur, pourquoi cette différence ?
- Cette question semble être hors-sujet, car il est à propos de l'utilisation de la commande Unix, appartient à unix.stackexchange.com
Vous devez vous connecter pour publier un commentaire.
grep
parfois désactive la sortie de la couleur, par exemple lors de l'écriture d'un tuyau. Vous pouvez remplacer ce comportement avecgrep --color=always
La ligne de commande correcte serait
C'est assez verbeux, alternativement, vous pouvez simplement ajouter la ligne
à votre
.bashrc
par exemple et utilisercgrep
comme la couleur de grep. Lors de la redéfinition degrep
vous pourriez avoir des problèmes avec les scripts qui s'appuient sur la production spécifique degrep
et n'aime pas ascii code d'échappement.grep
.alias grep='grep --color=auto
donc j'ai juste besoin de modifier mon~/.bashrc
où il a été défini dans la première place.Un mot de conseils:
Lors de l'utilisation de
grep --color=always
, la réelle chaînes de passer à la prochaine pipe va être changé. Cela peut conduire à la situation suivante:Même si l'option
-ve '12'
devrait exclure de la ligne médiane, il ne sera pas parce qu'il y a de la couleur des caractères entre1
et2
.--color=auto
, alors il doit ramasser le fait que vous êtes à la tuyauterie d'ailleurs et supprimer des couleurs tout à fait, mais ce genre de défaites le but. Si vous voulez des résultats colorés, je suppose que vous pourriez grep-il de nouveau à la dernière conduite à l'aide d'--color
.--color=always
fonctionne, avec, je suppose, les mises en garde énoncées ci-dessus.Il suffit de répéter la même commande grep à la fin de votre pipe.
grep WORD * | grep -v AVOID | grep -v AVOID2 | grep WORD
grep -v AVOID * | grep WORD