Vamos usar tput
para gerar o código de cores do seu terminal para amarelo e preto:
$ yel=$(tput setaf 3)
$ blk=$(tput setaf 0)
Vamos examinar o que o código amarelo realmente inclui:
$ echo -n "$yel" | hexdump -C
00000000 1b 5b 33 33 6d |.[33m|
00000005
Agora, podemos usar grep
para pesquisar o código de cor amarelo e imprimir a string que combina desde o início do código amarelo até o próximo código, seja qual for o código:
$ echo "abc ${yel}Yellow${blk} def" | grep -Eo $'\x1b\[33m.[^\x1b]*\x1b\[....'
Yellow
Observe que o código de cores para amarelo inclui [
, que grep
considera um caractere ativo regex. Assim, para corresponder a um literal [
, precisamos escapar dele por grep
. Para fazer isso, usamos $'...'
do bash para definir o código de cor com ['escaped.
É provável que haja mais de um código para produzir amarelo no seu terminal. Você desejará examinar a saída de qualquer comando que estiver usando para determinar quais códigos estão sendo usados e incluí-los em seu comando grep
.