Regex grep中的正则表达式不考虑条件子句?
下面的正则表达式Regex grep中的正则表达式不考虑条件子句?,regex,grep,Regex,Grep,下面的正则表达式 (created|modified|renamed) mode 当给出这些输入时 created mode 123 created sfs abc aasdf foobar foo1\nfoo2 其中,只有最后一个grep(在“or”条件周围没有())返回结果 我在macOS和ubuntu上都试过 更新尝试使用grep-E echo-e'创建模式123\n创建sfs\n abc\n aasdf foobar\n foo1\nfoo2'| grep-e'(创建\|新文件
(created|modified|renamed) mode
当给出这些输入时
created mode 123
created sfs
abc
aasdf foobar
foo1\nfoo2
其中,只有最后一个grep
(在“or”条件周围没有())返回结果
我在macOS
和ubuntu
上都试过
更新尝试使用grep-E
echo-e'创建模式123\n创建sfs\n abc\n aasdf foobar\n foo1\nfoo2'| grep-e'(创建\|新文件\|修改)模式'
没有结果
另一个更新我错过了@Barmar的一条评论:使用-E
时需要取消管道的景观
echo-e'创建模式123\n创建sfs\n abc\n aasdf foobar\n foo1\nfoo2'| grep-e'(创建\|新文件\|修改)模式'
[正确]给出
created mode 123
如果使用基本正则表达式,则必须转义
(
以及|
)
echo -e 'created mode 123\n created sfs\n abc\n aasdf foobar\n foo1\nfoo2' | grep '\(created\|new\|modified\) mode'
或者,您可以将扩展regexp与-E
一起使用,则不能转义其中任何一个
echo -e 'created mode 123\n created sfs\n abc\n aasdf foobar\n foo1\nfoo2' | grep -E '(created|new|modified) mode'
如果使用基本正则表达式,则必须转义
(
以及|
)
echo -e 'created mode 123\n created sfs\n abc\n aasdf foobar\n foo1\nfoo2' | grep '\(created\|new\|modified\) mode'
或者,您可以将扩展regexp与-E
一起使用,则不能转义其中任何一个
echo -e 'created mode 123\n created sfs\n abc\n aasdf foobar\n foo1\nfoo2' | grep -E '(created|new|modified) mode'
请在问题中添加示例输入(无描述、无图像、无链接)和该示例输入的所需输出(无注释)。示例输入以文本形式显示。输出也应清晰,但我将在任何情况下添加文本,使用
grep-E
且不转义
,或转义(
和)
@Barmargrep-E
至少在macos上没有返回任何结果。我将把这个例子也添加到问题中。你读了我说的吗?如果你使用-E
,你不会逃过管道。请将样本输入(没有描述,没有图像,没有链接)和你想要的输出添加到你的问题中(没有评论)。示例输入以文本显示。输出也应该清晰,但我将在任何情况下添加文本使用grep-E
,不转义|
,或转义(
和)
@Barmargrep-E
至少在macos上没有返回任何结果。我将把这个例子也添加到问题中。你读过我说的吗?如果你使用-E
,你不会逃脱管道。