【发布时间】:2021-11-15 14:22:05
【问题描述】:
我正在尝试打印包含 2 个或 3 个数字的行以及该行的其余部分。我带着代码来了:
grep -P '[[:digit:]]{2,3}' address
但这甚至会打印出 4 位数字的行。我不知道为什么会这样。
grep -E '[0-9]{2,3}' address
这是包含地址文本的文件:
12 主街
123 大街
1234 大街
我已经指定使用 {2,3} 打印 2 或 3 个值,但过滤器仍然不起作用,并且正在打印超过 3 位的行。任何人都可以帮助我吗?非常感谢。
【问题讨论】:
-
试试这个:
^[[:digit:]]{2,3}\b(如果行以数字开头,这有效) -
确实如此。 '\b' 在这里是什么意思?
-
如果数字后面总是空格的另一种解决方案:
^[[:digit:]]{2,3} -
作为解释,根据定义,包含 4 位序列的行必然包含 3 位序列,因此
grep也会找到它们。您需要搜索“不是数字后跟2或3位数字后跟不是数字”。 -
不要将文本转换为像素。
标签: grep