Como destacar uma palavra na saída de “cat”? [duplicado]

9

Eu posso fazer o seguinte para ver se alguma palavra está disponível na saída de "cat":

cat filename | grep word

Isso filtra a saída e mostra apenas as linhas que contêm "palavra". Agora, é possível destacar apenas a "palavra" na saída, sem perder outras linhas?

    
por Meysam 25.12.2013 / 07:06

2 respostas

14

Você pode usar o EOL junto com sua consulta real (se você já tiver um alias para grep usar --color , como é padrão em muitas distribuições, poderá omiti-lo nos seguintes exemplos):

grep --color=auto 'word\|$' file

Como o EOL não é um caractere real, ele não destacará nada, mas corresponderá a todas as linhas.

Se você preferir não ter que escapar do caractere de pipe, poderá usar expressões regulares estendidas:

grep -E --color=auto 'word|$' file
    
por 25.12.2013 / 07:13
4

Se você não tiver o GNU grep disponível, aqui está algo mais portátil:

grepc()
{
  pattern=$1
  shift
  esc=$(printf "3")
  sed 's"'"$pattern"'"'$esc'[32m&'$esc'[0m"g' "$@"
}

Você pode personalizar a cor usando um desses códigos

30m black
31m red
32m green
33m yellow
34m blue
35m magenta
36m cyan
37m white

Usar 7m em vez de um código de cores colocará a string em vídeo reverso.

    
por 25.12.2013 / 07:17