Как остановить сопоставление grep в терминальных escape-последовательностях (или раскрасить в несколько цветов)?
Я написал несколько сценариев для раскраски совпадений, например:
$ echo abcdef | grepg c
ab[green]c[/green]def
$ echo abcdef | grepr e
abcd[red]e[/red]f
Это также работает, когда я цепью это:
$ echo abcef | grepr a | grepg b | grepg c | grepp e | grepl f
abcdef [each letter have it's own style]
Но когда я пробую это для цифр, результат неправильный:
$ 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
потому что, если последующие greps также совпадают внутри escape-последовательностей, созданных предыдущими greps.
Как это сделать правильно? Мне нужно либо остановить сопоставление grep внутри последовательностей эскалации терминала, либо сделать так, чтобы оно совпадало с несколькими шаблонами и раскрасить их в разные цвета.
1 ответ
Взгляните на взгляд назад и посмотрите в регулярные выражения.
Что-то вроде
(?<!\[\d\d;\d\d?m)yourregexhere
может работать (я не уверен насчет формата строк раскрашивания)