Linux三剑客学习之提取手机号码-阿里云开发者社区

开发者社区> 开发与运维> 正文

Linux三剑客学习之提取手机号码

简介:

【问题描述】

会员提供的信息中,有些手机号是会员随意输入的,因此要统计出有效的手机号。

如以下信息:

1
2
3
4
5
6
7
8
9
10
11
12
18295089368
1895089368
185089368
182089368
17888888888
17884432254
17888132435
17812266688
18295089368
18235089368
13335508387
15575089368

【解决办法】

利用grep,sed与awk结合正则即可。下面分别说明这三个的用法。

1.grep

1
2
3
4
5
6
7
8
9
10
11
12
13
14
root@network test$egrep '^1[3578][0-9]{9}' test.txt 
18295089368
17888888888
18295089368
18235089368
13335508387
15575089368
root@network test$grep -oP '(?<='')(1[3578]{1}[0-9]{9})(?='')' test.txt
18295089368
17888888888
18295089368
18235089368
13335508387
15575089368

2.sed

1
2
3
4
5
6
7
8
9
10
11
12
13
14
root@network test$sed -n '/1[3578]\{1\}[0-9]\{9\}/p' test.txt
18295089368
17888888888
18295089368
18235089368
13335508387
15575089368
root@network test$sed -rn '/1[3578]{1}[0-9]{9}/p' test.txt
18295089368
17888888888
18295089368
18235089368
13335508387
15575089368

3.awk

1
2
3
4
5
6
7
root@oldboy test$awk --posix '/1[3578]{1}[0-9]{9}/' test.txt
18295089368
17888888888
18295089368
18235089368
13335508387
15575089368

注;以上的awk中的--posix启用后就支持间隔表达式了,即r{n},r{n,},r{n,m}

然后说一下个性化需求。

1.如查找含有连续两个8的手机号。

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
root@network test$grep -E '1[3578]{1}.*[8]{2}.*' test.txt 
17888888888
17884432254
17888132435
17812266688
 
root@network test$sed -rn '/1[3578]{1}.*[8]{2}.*/p' test.txt
17888888888
17884432254
17888132435
17812266688
 
root@network test$awk --posix '/1[3578]{1}.*[8]{2}.*/' test.txt
17888888888
17884432254
17888132435
17812266688
root@network test$grep '[8]\{2\}' test.txt 
17888888888
17884432254
17888132435
17812266688

2.查找末尾是两个8的手机号

1
2
3
4
5
6
7
8
9
10
11
root@network test$grep -E '1[3578]{1}[0-9]{7}[8]{2}' test.txt 
17888888888
17812266688
 
root@network test$sed -rn '/1[3578]{1}[0-9]{7}[8]{2}/p' test.txt
17888888888
17812266688
 
root@network test$awk --posix '/1[3578]{1}[0-9]{7}[8]{2}/' test.txt
17888888888
17812266688




本文转自 xoyabc 51CTO博客,原文链接:http://blog.51cto.com/xoyabc/1725659,如需转载请自行联系原作者

版权声明:本文内容由阿里云实名注册用户自发贡献,版权归原作者所有,阿里云开发者社区不拥有其著作权,亦不承担相应法律责任。具体规则请查看《阿里云开发者社区用户服务协议》和《阿里云开发者社区知识产权保护指引》。如果您发现本社区中有涉嫌抄袭的内容,填写侵权投诉表单进行举报,一经查实,本社区将立刻删除涉嫌侵权内容。

分享:
开发与运维
使用钉钉扫一扫加入圈子
+ 订阅

集结各类场景实战经验,助你开发运维畅行无忧

其他文章