Você deve começar com os padrões mais complexos (mais longos) primeiro, se começar apenas com os caracteres de controle, o restante poderá corresponder aos padrões no texto normal também. Se a velocidade não for a prioridade mais alta, divida o processamento por várias instruções, assim será mais fácil depurar e você poderá controlar mais facilmente a ordem de remoção.
As seqüências de escape de cores começam com ^[
e terminam em m
.
Você pode removê-los usando sed
: ¹
sed -r "s/\x1B\[([0-9]{1,2}(;[0-9]{1,2})?)?[m//g"
Outros padrões começam com ^[
e terminam em G
(cursor de posição):
sed -r "s/\x1B\[.*G//g"
Quaisquer caracteres de controle restantes devem acompanhar:
sed 's/[[:cntrl:]]//g'
Combinado em:
sed -r "s/\x1B\[([0-9]{1,2}(;[0-9]{1,2})?)?m//g" /var/log/boot.log | \
sed -r "s/\x1B\[.*G//g" | \
sed 's/[[:cntrl:]]//g'
¹ Se isso é elegante ou se o elefante está nos olhos de quem vê.