Digamos que eu tenha uma saída de um comando colorido para o terminal. Quero corresponder a qualquer linha que contenha a cor amarela. Como posso fazer isso em grep, por exemplo:mycommand -itSomtimesPrintsLinesWithYellowColorCodes | grep -e "?????"
Nota: NÃO se trata de colorir a saída do grep ou adicionar cores. É apenas sobre como filtrar/combinar a cor da entrada que entra no grep.
Vamos usar
tput
para gerar o código de cores do seu terminal para amarelo e preto:Vamos examinar o que o código amarelo realmente inclui:
Agora, podemos usar
grep
para procurar o código da cor amarela e imprimir a string que corresponde desde o início do código amarelo até o próximo código, seja ele qual for:Observe que o código de cores para amarelo inclui o
[
quegrep
considera ser um caractere ativo regex. Assim, para corresponder a um literal[
, precisamos escapá-lo paragrep
. Para fazer isso, usamos bash's$'...'
para definir o código de cores com [` escapado.É provável que haja mais de um código para produzir amarelo em seu terminal. Você desejará examinar a saída de qualquer comando que esteja usando para determinar quais códigos estão sendo usados e incluí-los em seu
grep
comando.