Eu tenho um programa que cospe uma saída para stdout
gostar:
[OK] Something is ok
[OK] Something else is also ok
[FAIL] This does not look good
[FAIL] Neither does this
[OK] At least this is fine
Para identificar mais facilmente as falhas da saída, gostaria de marcar as ocorrências da palavra FAIL
- chave com vermelho, sem descartar as outras mensagens. Seria bom se eu também pudesse destacar as OK
palavras-chave com verde :).
Fazer um pipe para egrep --color FAIL
mostrará apenas as linhas em que a FAIL
palavra-chave está presente.
grep
solução ver unix.stackexchange.com/a/34322tail -f
eawk
magia, eu sou bom para ir =)Respostas:
Baseado no
manatwork
pequeno e brilhante truque "ou nada" da outra questão, ofereço isso, que adiciona a capacidade de obter duas cores de destaque:Ou seja, você executa
grep
a saída duas vezes, com umaGREP_COLORS
variável de ambiente diferente a cada vez.O valor '01; 32 'significa "verde negrito" e o outro significa "vermelho negrito". Veja o artigo da Wikipedia sobre códigos ANSI para mais idéias.
Infelizmente, isso requer GNU grep versão 2.5.3 ou superior. As versões anteriores do GNU grep suportavam um mecanismo de coloração diferente, mas essas versões possuem um bug que impede que você use o recurso em um pipeline mais de uma vez. O BSD grep emula o antigo mecanismo de coloração GNU grep e funcionará duas vezes em um pipeline, mas grita sobre "subexpressão vazia" devido ao
manatwork
hack.Você pode remover as barras invertidas no final das duas primeiras linhas para transformar tudo em uma única linha. Acabei de dividi-lo aqui para maior clareza e para ser agradável com o formato de página SE.
fonte
GREP_COLORS
, no plural. Ele usaGREP_COLOR
apenas o método mais antigo , e esse método possui um bug que o impede de fazer a coisa certa. Se você alterar o comando a ser usadoGREP_COLOR=32
, isso mudará a cor de destaque apenas da primeira correspondência. Se você canalizar o resultado,hexdump -c
poderá ver que a adição do segundoegrep
comando faz alguma coisa, mas não é ANSI legal. Conclusão: você precisa atualizargrep
para que isso funcione corretamente.GREP_COLOR
bug (singular), mesmo que o recurso tenha sido descontinuado assim que substituído.Você pode usar multitail ou ccze para isso, ambos permitem que as configurações descrevam regexps para combinar e cores.
fonte
Com base na resposta de Warren Young, escrevi esse script Python que faz a mesma coisa de maneira mais elegante e com muito menos digitação. Então é assim que você usaria esse script:
fonte