博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
Linux三剑客学习之提取手机号码
阅读量:6926 次
发布时间:2019-06-27

本文共 1996 字,大约阅读时间需要 6 分钟。

【问题描述】

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

如以下信息:

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,如需转载请自行联系原作者
你可能感兴趣的文章
238. Product of Array Except Self除自身以外数组的乘积
查看>>
Tengine 添加第三方监控模块nginx-module-vts
查看>>
【LeetCode算法题库】Day4:Regular Expression Matching & Container With Most Water & Integer to Roman...
查看>>
关于坚持终身学习和培养内驱力的困惑
查看>>
jQuery操作input值总结
查看>>
在C\C++编程时常范的低级错误总结
查看>>
BZOJ3990:[SDOI2015]排序——题解
查看>>
socket
查看>>
AngularJS语法
查看>>
软件测试面试题汇总
查看>>
protobuf编码
查看>>
(转)递归的理解
查看>>
作业05:用户登录(三次机会)且每次输入错误显示剩余次数
查看>>
Java compiler level does not match the version of the installed Java project facet.
查看>>
laravel 杂项
查看>>
TRI 解题报告
查看>>
组合游戏题目泛做(SMZ第二轮)
查看>>
module_init的加载和释放
查看>>
JavaScript中的+= 是什么?
查看>>
find-the-difference
查看>>