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:
foo ^[[01;31m^[[Kbar^[[m^[[K
par exemple:
grep pattern file > result
Pour remplacer l'utilisation --color=always
.
grep --color=always pattern file | ...
Exemple:
Ayant fichier:
ID=111;Year=2013;foo=bar
ID=222;Year=2013;foo=baz
alors
grep --color=always ID file | grep --color=always 2013 | grep foo
colorierait ID
, 2013
et foo
.
grep --color=always ID file | grep 2013 | grep foo
colorerait ID
et foo
, mais pas 2013
.
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 exempleID=111
.
Dans certains cas, on voudra peut-être les couleurs des terminaux dans le fichier . Essayez par exemple
grep --color=always foo file > result
cat result
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:
export GREP_OPTIONS="--color=always"
à 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 en grep
raison du fait mentionné ci-dessus 1 .
Ajoutez un alias
si vous l'utilisez souvent.
alias cgrep='grep --color=always'
GREP_OPTIONS
et --color
prendre trois options : never
, auto
et always
. Les deux premiers devraient être les seuls envisagés GREP_OPTIONS
.
Vous pouvez également consulter GREP_COLORS
les man
pages ou sur gnu grep .