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.