如何停止终端转义序列中的 grep 匹配(或着色为多种颜色)?

如何停止终端转义序列中的 grep 匹配(或着色为多种颜色)?

我编写了许多脚本来为比赛着色,如下所示:

$ 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

因为如果后续的 grep 也与先前的 grep 生成的转义序列匹配。

如何正确操作?我需要停止终端缩放序列内的 grep 匹配,或者使其匹配多个模式并将它们着色为不同的颜色。

答案1

看一眼后视并在正则表达式中向前看。

就像是

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

可以工作(我不确定着色字符串的格式)

相关内容