我需要一个GREP表达式,它将找到6-10个数字,以1000个间隔的句点分隔。这些时期可以是空格,也可以不是空格。它必须找到:
3.878.456.789
878.456.789
78.456.789
8.456.789
456.789
3 878 456 789
878 456 789
78 456 789
8 456 789
456 789
3878456789
878456789
78456789
8456789
456789
这些数字可以是任何数字,不受示例中的数字约束。给出的例子是显示空格或句点的长度和模式。
答案 0 :(得分:1)
使用此:
grep -oP "(?=(?:\D*\d){6,10}\D*$)\b(?:\d{1,3}(?:[ .]\d{3})+|\d+)\b" somepath
<强>解释强>
(?=(?:\D*\d){6,10}\D*)
断言接下来的是任何非数字,然后是一位数,6到10次,然后是任意数量的非数字,直到行尾< / LI>
\b
\d{1,3}(?:[ .]\d{3})+
一到三位数后跟一个或多个(点或空格后跟三位数)的实例,或|
\d+