正则表达式取决于长度

And*_*bor -3 regular-expression

只接受长度为 5 加 2 倍数的行的正则表达式。例如:7、12、32 等。有人知道吗?

Ste*_*itt 7

如果您真的想使用正则表达式,将“^..(.{5})+$”解释为扩展的正则表达式即可;您可以将它用于例如grep -E

for i in {1..20}; do printf "%.${i}s\n" --------------------; done | grep -E '^..(.{5})+$'
Run Code Online (Sandbox Code Playgroud)

这可以重写为基本的正则表达式,“^..(.{5})+$”。

这两个表达式都锚定到匹配文本的开头和结尾,因此它们匹配整行。“..”匹配任意两个字符,“(.{5})”匹配任意五个字符,“+”至少重复最后一次匹配。因此,这会检查每行包含的字符数是否等于 5× n +2(n  > 0)。

或者,其他工具可以非常快速地检查线长:

... | awk 'length > 5 && length % 5 == 2'
Run Code Online (Sandbox Code Playgroud)