Dê uma olhada em lookkbehind e dê uma olhada nas regexes.
Algo como
(?<!\[\d\d;\d\d?m)yourregexhere
poderia funcionar (não tenho certeza sobre o formato das seqüências de cores)
Eu escrevi um monte de scripts para colorir correspondências, assim:
$ echo abcdef | grepg c
ab[green]c[/green]def
$ echo abcdef | grepr e
abcd[red]e[/red]f
Também funciona quando eu encadeio:
$ echo abcef | grepr a | grepg b | grepg c | grepp e | grepl f
abcdef [each letter have it's own style]
Quanto mais eu tento isso para dígitos, o resultado está errado:
$ echo 12345 | grepr 1 | grepg 2 | grepb 3 | grepp 4 | grepl 5
[01;[01;3[01;35m4m31m1[01;[01;3[01;35m4m32m2[01;3[01;35m4m3[01;35m45
porque se os greps subsequentes também corresponderem dentro das sequências de escape produzidas pelos greps anteriores.
Como fazer isso certo? Eu preciso parar o grep matching dentro de seqüências terminais de escala ou fazê-lo corresponder a mais de um padrão e colori-los para cores diferentes.
Dê uma olhada em lookkbehind e dê uma olhada nas regexes.
Algo como
(?<!\[\d\d;\d\d?m)yourregexhere
poderia funcionar (não tenho certeza sobre o formato das seqüências de cores)