Use --color=always
.
grep
detecta se a saída é para um pipe (ou arquivo). Você nunca mais quer cores quando a saída é para arquivo - como isso é seqüências de escape para o terminal. Tipicamente:
foo ^[[01;31m^[[Kbar^[[m^[[K
de, por exemplo:
grep pattern file > result
Para substituir o uso --color=always
.
grep --color=always pattern file | ...
Exemplo:
Ter 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
coloria ID
, 2013
e foo
.
grep --color=always ID file | grep 2013 | grep foo
coloria ID
e foo
, mas não 2013
.
1 Importante: Você também precisa lembrar que a clutter adicionada das cores é passada
para o próximo comando na cadeia. Quando o código for colorido, você não poderá (com facilidade) corresponder, por exemplo, ID=111
.
Em algumas ocasiões, talvez você queira cores de terminal no 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.
Como 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 casos, isso quebraria grep
devido ao fato mencionado acima 1 .
Adicione um alias
se você usá-lo com frequência.
alias cgrep='grep --color=always'
GREP_OPTIONS
e --color
escolha três opções : never
, auto
e always
. Os dois primeiros devem ser os únicos considerados para GREP_OPTIONS
.
Você também pode verificar GREP_COLORS
nas páginas man
ou no gnu grep .