【发布时间】:2017-07-28 21:39:46
【问题描述】:
我正在使用grep 和-P(Perl 正则表达式)为字符串着色:
echo aaa bbb ccc ddd eee | grep --color=always -P "^[^#]*\K(bbb|ccc)|^"
在上面的例子中,我想给字符串bbb和ccc着色。但是,grep 只会对最后一个 (ccc) 着色。
如何修改我的正则表达式,使两个字符串匹配并着色?
【问题讨论】:
-
试试
bbb|ccc。#和BOS主播^有什么关系? -
@sln - 我不想给 cmets 着色,因此是
#。 “试试 bbb|ccc”是什么意思? -
我想
grep只着色它实际匹配的内容,而不是你过去匹配的正则表达式。 (这里是ccc,因为*是贪婪的。) -
除非 grep 不是行解析器,否则它不会为您提供最后一个从右到左的匹配项?
-
@sin 有趣的是,在末尾添加
g使其颜色为bbb。我会说这是因为如果 first 匹配ccc(*是贪婪的)然后它继续匹配bbb。