Use --color=always
.
grep
detecta se a saída é para um tubo (ou arquivo). Você quase nunca deseja cores quando a saída é arquivar - pois são seqüências de escape para o terminal. Tipicamente:
foo ^[[01;31m^[[Kbar^[[m^[[K
por exemplo:
grep pattern file > result
Para substituir o uso --color=always
.
grep --color=always pattern file | ...
Exemplo:
Tendo arquivo:
ID=111;Year=2013;foo=bar
ID=222;Year=2013;foo=baz
Então
grep --color=always ID file | grep --color=always 2013 | grep foo
iria colorir ID
, 2013
e foo
.
grep --color=always ID file | grep 2013 | grep foo
iria colorir ID
e foo
, mas não 2013
.
1 Importante: Você também deve se lembrar que a desordem adicionadadas cores é passada para o próximo comando da cadeia. Depois que o ID é colorido, você não pode (com facilidade), corresponder, por exemploID=111
.
Em alguma ocasião, talvez alguém queira cores terminais em arquivo . Tente por exemplo
grep --color=always foo file > result
cat result
Embora o arquivo resultante tenha portabilidade muito limitada.
A coloração em si também é uma extensão.
Conforme mencionado pelo bom @slm , você pode adicionar:
export GREP_OPTIONS="--color=always"
para o seu .bashrc
etc, mas não, a menos que você, por algum motivo, realmente entenda as implicações e ainda queira fazê-lo. Em muitos aspectos, isso se romperia grep
devido ao fato mencionado acima 1 .
Adicione um alias
se você o usa com frequência.
alias cgrep='grep --color=always'
GREP_OPTIONS
e --color
ter três opções : never
, auto
e always
. Os dois primeiros devem ser os únicos considerados GREP_OPTIONS
.
Você também pode conferir GREP_COLORS
nas man
páginas ou no gnu grep .