Mar*_*ter 2 regex perl grep colors
我使用grep与-P(Perl的正则表达式)上色字符串:
echo aaa bbb ccc ddd eee | grep --color=always -P "^[^#]*\K(bbb|ccc)|^"
Run Code Online (Sandbox Code Playgroud)
在上面的示例中,我想为字符串bbb和着色ccc。但是,grep仅使最后一个(ccc)变色。
如何修改我的正则表达式,以便两个字符串都匹配并被着色?
因为您的正则表达式仅匹配一种选择:从^开始到ccc。但是您想要多个匹配项。这可以通过链接匹配以使用\Ganchor开始来实现。
此外,还需要通过附加[^#]* 懒惰?来避免跳过比赛。
echo aaa bbb ccc ddd eee | grep --color=always -P "\G[^#]*?\K(?:bbb|ccc)"
Run Code Online (Sandbox Code Playgroud)
以及多行字符串的regex变体。
(?:\G|\n)[^#]*?\K(?:bbb|ccc)
Run Code Online (Sandbox Code Playgroud)
另一种方法是使用pcre动词(*SKIP)(*F)跳过所有内容,直到从#
#.*(*SKIP)(*F)|bbb|ccc
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
286 次 |
| 最近记录: |