Я написал несколько сценариев для раскраски совпадений, например:

$ 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 ответ1

0

Взгляните на взгляд назад и посмотрите в регулярные выражения.

Что-то вроде

(?<!\[\d\d;\d\d?m)yourregexhere

может работать (я не уверен насчет формата цветных строк)

Всё ещё ищете ответ? Посмотрите другие вопросы с метками .