Com base no hack brilhante "% ou nada" do manatwork
na outra pergunta, ofereço isso, que adiciona a capacidade de obter duas cores de destaque:
$ myprogram | \
GREP_COLORS='mt=01;32' egrep --color=always '\[OK\]|' | \
GREP_COLORS='mt=01;31' egrep --color=always '\[FAIL\]|'
Ou seja, você executa grep
na saída duas vezes, com uma variável de ambiente GREP_COLORS
diferente a cada vez.
O valor "01; 32" significa "verde em negrito" e o outro significa "vermelho em negrito". Consulte o artigo da Wikipédia sobre os códigos ANSI para obter mais ideias.
Infelizmente, isso requer o GNU grep versão 2.5.3 ou superior. Versões mais antigas do GNU grep suportavam um mecanismo de coloração diferente, mas essas versões têm um bug que o impede de usar o recurso em um pipeline mais de uma vez. O BSD grep emula o antigo mecanismo de coloração do GNU grep, e ele funcionará duas vezes em um pipeline, mas ele grita sobre a "sub-expressão vazia" devido ao manatwork
hack.
Você pode remover as barras invertidas no final das duas primeiras linhas para criar uma única linha. Eu acabei de dividi-lo aqui para clareza e para jogar bem com o formato de página SE.