Houve um answer on unix.stackexchange.com que tinha esse truque legal:
grep -E --color 'pattern|$' file.txt
ou
grep --color 'pattern\|$' file.txt
que corresponde ao seu padrão ou ao fim de linha em cada linha. Apenas o padrão é destacado.
Quando uso, por exemplo cat file.txt | grep --color=tty "pattern" obtenho o padrão que pesquiso em destaque. Quando quero mais algum contexto em torno de cada resultado, o grep tem os parâmetros -A , -B e -C .
No entanto, quero exibir o arquivo inteiro (ou qualquer saída de comando) e destacar um determinado padrão. Existe tal comando de destaque ou ferramenta?
Houve um answer on unix.stackexchange.com que tinha esse truque legal:
grep -E --color 'pattern|$' file.txt
ou
grep --color 'pattern\|$' file.txt
que corresponde ao seu padrão ou ao fim de linha em cada linha. Apenas o padrão é destacado.
Eu gosto de ack .
ack --passthru somepattern filename
É como grep, mas melhor. Ele é destacado por padrão e, com a opção --passthru , mostra o arquivo inteiro (ou entrada padrão) em vez de apenas as linhas correspondentes.
Também recomendo o uso de less (ou algo parecido), mas quero mostrar uma solução mais didática para você. Depois de definir esta função:
function highlight()
{
sed "s/$1/'tput smso'&'tput rmso'/g" "${2:--}"
}
Você pode usá-lo desta maneira:
command | highlight pattern
highlight pattern file.txt
Observação: essa versão faz distinção entre maiúsculas e minúsculas, para alterar isso basta anexar i após g na expressão sed .
Passar -C para grep com um valor suficientemente alto fará isso.
less está destacando o padrão, então
less -p 'mypattern' file.txt
ou
ridiculously | long | pipe | less
e depois em menos / para procurar um padrão que será destacado.
Nota lateral:
Você pode melhorar seu comando, por exemplo,
defina alias alias grep="grep --color=tty" e use-o assim:
grep 'mypattern' file.txt;
Existe uma boa ferramenta supercat , que atende exatamente a esse propósito. Ele pode colorir a saída do seu console e produzir um html "destacado" a partir da sua entrada.
Tags command-line linux