如何使用grep仅匹配行尾字符的奇数出现

Lal*_*hra 3 regex grep

例如,我正在匹配 'a' 的奇数出现。所以“helloaaa”应该匹配而“helloaaaa”不应该匹配。

我还在 bash 上尝试过带和不带 -E 选项的“(aa)*a$”。

Mar*_*ers 5

你的问题是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)