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,如需转载请自行联系原作者
相关文章
|
5月前
|
NoSQL 关系型数据库 MySQL
Linux学习记录---(1、基本命令)
该博客文章提供了Linux系统中基本命令的使用记录,包括文件和目录操作、Redis服务管理、MySQL数据库操作以及Tomcat服务器的启动和检查。
Linux学习记录---(1、基本命令)
|
2月前
|
Linux 编译器 开发工具
【Linux快速入门(三)】Linux与ROS学习之编译基础(Cmake编译)
【Linux快速入门(三)】Linux与ROS学习之编译基础(Cmake编译)
129 2
|
2月前
|
存储 安全 Linux
|
2月前
|
Linux Shell 数据安全/隐私保护
|
6月前
|
Ubuntu Linux vr&ar
IM跨平台技术学习(十二):万字长文详解QQ Linux端实时音视频背后的跨平台实践
本文详细记录了新版QQ音视频通话在 Linux 平台适配开发过程中的技术方案与实现细节,希望能帮助大家理解在 Linux 平台从 0 到 1 实现音视频通话能力的过程。
211 2
|
3月前
|
Linux 编译器 C语言
【Linux快速入门(一)】Linux与ROS学习之编译基础(gcc编译)
【Linux快速入门(一)】Linux与ROS学习之编译基础(gcc编译)
|
3月前
|
网络协议 Linux
linux学习之套接字通信
Linux中的套接字通信是网络编程的核心,允许多个进程通过网络交换数据。套接字提供跨网络通信能力,涵盖本地进程间通信及远程通信。主要基于TCP和UDP两种模型:TCP面向连接且可靠,适用于文件传输等高可靠性需求;UDP无连接且速度快,适合实时音视频通信等低延迟场景。通过创建、绑定、监听及读写操作,可以在Linux环境下轻松实现这两种通信模型。
54 1
|
3月前
|
Linux 开发工具
【Linux快速入门(二)】Linux与ROS学习之编译基础(make编译)
【Linux快速入门(二)】Linux与ROS学习之编译基础(make编译)
138 0
|
5月前
|
NoSQL Ubuntu Linux
Linux内核学习
Linux内核学习
120 3
|
4月前
|
Linux
使用qemu来学习Linux的休眠和唤醒
使用qemu来学习Linux的休眠和唤醒