Eu tenho a seguinte função que uso para essas coisas:
highlight () {
perl -pe "s/$1/\e[1;31;43m$&\e[0m/g"
}
Internamente parece meio feio, é legal e fácil de usar, assim:
cat some_file.txt | highlight some_word
ou, para um exemplo um pouco mais real:
tail -f console.log | highlight ERROR
Você pode alterar as cores para qualquer coisa que quiser (o que pode ser difícil com o grep - não tenho certeza) alterando os 1 e 31 e 43 (após \e[ ) para valores diferentes . Os códigos a usar são tudo sobre o local , mas aqui está uma introdução rápida: o 1 negrita o texto, o 31 torna vermelho e o 43 fornece um fundo amarelo. 32 ou 33 seriam cores diferentes e 44 ou 45 seriam origens diferentes: você entendeu. Você pode até fazê-lo piscar (com 5 ) se você estiver inclinado.
Isso não usa módulos Perl especiais, e o Perl é quase onipresente, então eu esperaria que funcionasse praticamente em qualquer lugar. A solução grep é muito inteligente, mas a opção --color no grep não está disponível em todos os lugares. Por exemplo, eu apenas tentei esta solução em uma caixa do Solaris rodando o bash, e outro executando o ksh, e minha máquina local do Mac OS X rodando o zsh. Tudo funcionou muito bem. Solaris bloqueado na solução grep --color , no entanto.
Além disso, o ack é incrível, e eu o recomendo para quem ainda não o descobriu, mas tive alguns problemas para instalá-lo em alguns dos muitos servidores em que trabalho. (Eu esqueci o porquê: eu acho que relacionado aos módulos Perl necessários.)
Desde que eu não acho que já trabalhei em uma caixa Unix que não tinha o Perl instalado (com a exceção de sistemas do tipo embedded, Linksys roteadores, e tal) eu diria que esta é uma solução universalmente utilizável.