
Existe um comando que destaca uma determinada expressão no texto?
Estou procurando algo como a função 'pesquisar' em menos, mas com saída de texto normal no stdout, em vez do less
visualizador.
Exemplo:
$ cat test.txt | highlight "an"
Perspectivas deumRetirada ordenada da OTAN do Afeganistãoumistumsofreu dois reveses quando o presidente Hamid Karzai demumlimites estabelecidos para as tropas dos Estados Unidosumo Talibuminterrompeu as negociações de paz.
Poderia usar cores ou qualquer outro meio para destacar a expressão regular especificada.
Responder1
Não tenho certeza se isso se deve a um recurso ou apenas a algum efeito colateral oculto, mas funciona no GNU grep
2.11:
grep --color 'an\|' test.txt
Responder2
acktem uma --passthru
opção que fará isso:
ack --passthru an test.txt
some_command | ack --passthru an -
Responder3
Você pode experimentar este meu script. Ele permitirá que você especifique um arquivo ou receba uma entrada padrão. Você pode definir uma expressão regular Python para o texto que deseja destacar. o texto destacado é verde neon (ei, eu uso um fundo preto!) Mas você pode alterar oCódigo de cores ANSI.
#!/usr/bin/env python
import sys
import re
def highlight_text(text,pat):
def replacement_funk(matchobj): return '\x1b[42m%s\x1b[0m'%matchobj.group(0)
return re.sub(pat,replacement_funk,text)
if __name__ == '__main__':
if len(sys.argv) == 2:
input = sys.stdin
pat = sys.argv[1]
elif len(sys.argv) == 3:
input = open(sys.argv[2])
pat = sys.argv[1]
else:
sys.stderr.write("colorme pattern [inputfile]")
text = input.read()
print highlight_text(text,pat)
Aqui estáumexemplo.
blessburn@blessburn:/tmp$ cat test.txt | ./colorme.py an
Perspectivas deumRetirada ordenada da OTAN do Afeganistãoumistumsofreu dois reveses quando o presidente Hamid Karzai demumlimites estabelecidos para as tropas dos Estados Unidosumo Talibuminterrompeu as negociações de paz.
blessburn@blessburn:/tmp$ ./colorme.py '(Af.*? |NA[\w]{2})' test.txt
Perspectivas para um ordenamentoOTANretirada deAfeganistãosofreu dois reveses quando o presidente Hamid Karzai exigiu limites às tropas dos Estados Unidos e os talibãs suspenderam as negociações de paz.
Responder4
$cat test.txt | grep --colour=auto -C 100000 an
"cor" também funciona. Você também pode definir um alias para fazer com que o grep sempre use a opção:
alias grep='grep --colour=auto -C 100000'
Coloque o acima em /etc/profile.d/ algum lugar ou no seu .bashrc ou qualquer outra coisa.