![正则表达式取决于长度](https://linux22.com/image/175676/%E6%AD%A3%E5%88%99%E8%A1%A8%E8%BE%BE%E5%BC%8F%E5%8F%96%E5%86%B3%E4%BA%8E%E9%95%BF%E5%BA%A6.png)
一个正则表达式,仅接受长度为 5 加 2 倍数的行。例如:7、12、32 等。有人知道吗?
答案1
如果您确实想使用正则表达式,将“^..(.{5})+$”解释为扩展正则表达式就可以了;例如,您可以使用它grep -E
:
for i in {1..20}; do printf "%.${i}s\n" --------------------; done | grep -E '^..(.{5})+$'
这可以重写为基本正则表达式“^..(.{5})+$”。
这两个表达式都锚定到匹配文本的开头和结尾,因此它们匹配整行。 “..”匹配任意两个字符,“(.{5})”匹配任意五个字符,“+”至少重复最后一次匹配。因此,这会检查每行包含的字符数是否等于 5×n+2 为n > 0。
或者,其他工具可以非常快速地检查线长度:
... | awk 'length > 5 && length % 5 == 2'