我是一个使用grep / egrep / awk的新手并没有把我的脑袋包裹在正则表达式之外(奖励:对于没有编程经验的人来说,正则表达式的介绍链接会非常棒)。
我的问题围绕在平面文件中匹配数字范围。我的值是十位数。电话号码......
我试图匹配一系列在某个范围内移动的数字。
55512122041至55512122050(41,42,43,44,45,46,47,48,49和50)。
我一直在使用grep来匹配第一个这样的值。
grep 555121204[1-9]
下一步是我寻找最后的数字
grep 55512122050
我相信我没有找到正确的方法来使用正则表达式来允许一个grep。
答案 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