Si j'utilise deux grep
commandes consécutives , par exemple:
echo "foo bar" | grep foo | grep bar
Ensuite, le premier motif ("foo") n'est pas mis en surbrillance. En fait, il semble que grep supprime les codes de couleur de son entrée. Est-il un moyen d'empêcher cela?
Réponses:
Utilisez
--color=always
.grep
détecte si la sortie est vers un tube (ou fichier). Vous ne voulez plus de couleurs lorsque la sortie est dans un fichier - car il s'agit de séquences d'échappement pour le terminal. Typiquement:par exemple:
Pour remplacer l'utilisation
--color=always
.Exemple:
Ayant fichier:
alors
colorierait
ID
,2013
etfoo
.colorerait
ID
etfoo
, mais pas2013
.1 Important: Vous devez également vous rappeler que l' encombrement supplémentairedes couleurs est passé à la commande suivante de la chaîne. Une fois que l'ID est colorée, vous ne pouvez pas (facilement) faire correspondre par exemple
ID=111
.Dans certains cas, on voudra peut-être les couleurs des terminaux dans le fichier . Essayez par exemple
Bien que le fichier résultant aurait une portabilité très limitée.
La coloration elle-même est également une extension.
Comme mentionné par le bon @slm , vous pouvez ajouter:
à votre
.bashrc
etc, mais pas à moins que vous ne compreniez vraiment les implications et que vous vouliez toujours le faire. Il se romprait à bien des égards engrep
raison du fait mentionné ci-dessus 1 .Ajoutez un
alias
si vous l'utilisez souvent.GREP_OPTIONS
et--color
prendre trois options :never
,auto
etalways
. Les deux premiers devraient être les seuls envisagésGREP_OPTIONS
.Vous pouvez également consulter
GREP_COLORS
lesman
pages ou sur gnu grep .la source
export GREP_OPTIONS="--color=always"
dans un .bashrc fait des options les valeurs par défaut pour tous les greps, et vous l'avez à peu près cloué!ls
coreutils natifs et gnu OSX .