Grep模式查找第5个字符为数字的行

时间:2012-05-22 15:01:53

标签: regex grep

我要在第五个字符是数字的文件中找到行。也就是数字集{0123456789}。我制作了一个文件:

asdf1
asdf2

..依此类推,直到0。 我做了一些特殊字符和其他符号的案例,以确保我没有抓住这些行。

然而,有一件事引起了我的兴趣。在排队时:

SSSSS3

TTTTTS7

也就是说,每个S都是一个空格,而T是一个标签,当第五个字符是空格/制表符而不是数字时,也会检索该行。

有人可以解释为什么会这样吗? 我正在使用的模式是

'....[0-9](.)*'

如果我没弄错,那就是“。”代表任何角色,对吗?如何将超过4个制表符或空格计为小于5'。'?

1 个答案:

答案 0 :(得分:3)

你错过了行首锚:

^....[0-9]

如果没有它,egrep执行正则表达式搜索而不是正则表达式匹配,就像您已输入

一样
.*....[0-9]

虽然区别在于.*不会导致捕获-o等标记。

(请注意,最后的(.)*也是无用的。.*会隐式附加到RE的末尾,除非您放入行尾锚点$ 。)