例如,我正在匹配 'a' 的奇数出现。所以“helloaaa”应该匹配而“helloaaaa”不应该匹配。
我还在 bash 上尝试过带和不带 -E 选项的“(aa)*a$”。
你的问题是helloaaaa因为最后三个匹配a:
helloaaaa
===
Run Code Online (Sandbox Code Playgroud)
为避免这种情况,您需要确保前一个字符不是a:
grep -E '[^a](aa)*a$' filename
Run Code Online (Sandbox Code Playgroud)
在这里,我假设该行不完全是as。如果整行都可以是as 那么你可以使用这个正则表达式:
grep -E '(^|[^a])(aa)*a$' filename
Run Code Online (Sandbox Code Playgroud)