使用grep或awk匹配数字范围

时间:2014-08-27 05:08:41

标签: regex grep

我是一个使用grep / egrep / awk的新手并没有把我的脑袋包裹在正则表达式之外(奖励:对于没有编程经验的人来说,正则表达式的介绍链接会非常棒)。

我的问题围绕在平面文件中匹配数字范围。我的值是十位数。电话号码......

我试图匹配一系列在某个范围内移动的数字。

55512122041至55512122050(41,42,43,44,45,46,47,48,49和50)。

我一直在使用grep来匹配第一个这样的值。

grep 555121204[1-9]

下一步是我寻找最后的数字

grep 55512122050

我相信我没有找到正确的方法来使用正则表达式来允许一个grep。

1 个答案:

答案 0 :(得分:1)

尝试使用以下grep命令,该命令使用P Perl regex )参数,

grep -P '55512120(?:4[1-9]|50)' file

OR

grep -E '555121204[1-9]|5551212050' file

这将打印数字范围从55512122041到55512122050的行。

如果您只想打印数字,请将o参数添加到上面的grep命令中。

grep -oP '55512120(?:4[1-9]|50)' file

示例:

$ cat file
bar foo
5551212040 Don't match
5551212041 Match
5551212050 Match
foo bar
$ grep -P '55512120(?:4[1-9]|50)' file
5551212041 Match
5551212050 Match