如果您真的想使用正则表达式,将“^..(.{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)