例如,我匹配奇数个“a”。 所以“helloaaa”应该匹配,而“helloaaaa”不应该匹配。如何仅在匹配行末使用grep匹配奇数个字符
我也在bash上试过“(aa)* a $”,有和没有-E选项。
例如,我匹配奇数个“a”。 所以“helloaaa”应该匹配,而“helloaaaa”不应该匹配。如何仅在匹配行末使用grep匹配奇数个字符
我也在bash上试过“(aa)* a $”,有和没有-E选项。
您的问题是helloaaaa
因为最后三个a
S的比赛:
helloaaaa
===
为了避免这种情况,你需要确保前一个字符不是a
:
grep -E '[^a](aa)*a$' filename
这里我假设这条线不完全是a
s。如果整行可以是a
s,那么你可以使用这个正则表达式代替:
grep -E '(^|[^a])(aa)*a$' filename
不适用于我。这与你一起工作吗? – 2011-04-11 14:14:01
是的,它适用于我测试的所有示例。你能提供一个它不起作用的例子,你看到这个例子和你期望看到什么? – 2011-04-11 14:19:26
我确实尝试过这种表达方式。问题是我使用双引号而不是单引号。感谢您及时的回复。 – 2011-04-11 14:30:20
那么你的问题是什么?你忘了实际上问一个问题... – 2011-04-11 14:10:14
我需要一个正则表达式,它将匹配在行尾具有奇数个a的字符串。 – 2011-04-11 14:12:01