grep: exibe todas as saídas, mas realça as correspondências de pesquisa

6

no bash, se eu quiser executar um comando e exibir apenas linhas de saída que correspondam a um determinado padrão, posso canalizá-lo para grep , como

arquivo testfile

hello
there
my
friends

comando

$ cat testfile | grep 'hello'
hello #this will be highlightd

isso realçará a correspondência de pesquisa e exibirá a linha inteira em que ela se enquadra. Eu posso usar -A e -B para exibir linhas antes e depois dessa linha. Minha pergunta é que é possível executar o comando e exibir todas as saídas como normal, mas para realçar as correspondências de pesquisa como o grep? então minha saída seria

hello #highlighted
there
my
friends
    
por ewok 14.05.2015 / 18:40

2 respostas

10

Adicione a opção -z ao seu comando do GNU grep:

cat testfile | grep --color=always -z 'hello'

ou menor

grep --color=always -z 'hello' testfile
    
por 14.05.2015 / 18:48
7

Para usar um Color GREP apenas para realçar padrões combinados, mas sem alterar a saída:

grep --color=always -e "^" -e "hello" testfile

O primeiro padrão corresponderá a todas as linhas (todas as linhas serão impressas) o segundo padrão (e quaisquer padrões a seguir) fará com que o texto correspondente seja destacado em cores.

Como o primeiro padrão corresponde a todas as linhas, mas não corresponde a um caractere imprimível, ele não adiciona nenhum destaque de cor para não competir / interferir na legibilidade do texto realçado.

    
por 28.03.2017 / 00:06