Utilisez --color=always.
grepdé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, 2013et foo.
grep --color=always ID file | grep 2013 | grep foo
colorerait IDet 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 .bashrcetc, mais pas à moins que vous ne compreniez vraiment les implications et que vous vouliez toujours le faire. Il se romprait à bien des égards en grepraison du fait mentionné ci-dessus 1 .
Ajoutez un aliassi vous l'utilisez souvent.
alias cgrep='grep --color=always'
GREP_OPTIONSet --color prendre trois options : never, autoet always. Les deux premiers devraient être les seuls envisagés GREP_OPTIONS.
Vous pouvez également consulter GREP_COLORSles manpages ou sur gnu grep .