grep常见应用实例

 

在我们实际应用中,正则表达式的应用是非常广泛的,今天我就大家分享几个比较常见的正则表达式的应用实例,不周之处,还望高人多多指点!

 

一:使用正则表达式搜索邮箱地址

二:使用正则表达式搜索手机号

三:使用正则表达式搜索身份证号

四:使用正则表达式取网络配置文件中的IP地址的过程解析

 

一:使用正则表达式搜索邮箱地址:

[root@centos7 test]# cat mail

183530300@qq.com

netadmin@126.com

all-user@vip.qq.com

love_you@51cto.com

linuxedu@foxmail.com.cn

love-fire@vip.sina.com

love@vip.yahoo.com

This is a mailbox address table [root@centos7 test]# egrep "\<([[:alnum:]]+(-|_)*[[:alnum:]]*)\>@([[:lower:]]|[[:digit:]])+\.[[:lower:]]*(\.[[:lower:]]+)*" mail

183530300@qq.com

netadmin@126.com

all-user@vip.qq.com

love_you@51cto.com

linuxedu@foxmail.com.cn

love-fire@vip.sina.com

love@vip.yahoo.com

This is a mailbox address table 
qq_12345@qq.com
  
-NB74110@qq.com

wKioL1ekq4DhDmMcAAB_oEMww2g684.png

二:使用正则表达式搜索手机号:

[root@centos7 test]# cat tel

12812345678

a13012345678

b13112345678

c13212345678

1331234567890

13312345678

13412345678

13512345678

13612345678

13712345678

13812345678

13912345678

14012345678

14712345678

15012345678

15112345678

15212345678

15312345678

15412345678

15512345678

15612345678

15712345678

15812345678

15912345678

16012345678

17012345678

17712345678

17812345678

18012345678

18112345678

18212345678

18312345678

18412345678

18512345678

18612345678

18712345678

18812345678

abc1891234567890def

19012345678

[root@centos7 test]# egrep "\<13[0-9]{9}|147[0-9]{8}|15([0-3]|[5-9])[0-9]{8}|17[0,7][0-9]{8}|18([0-3]|[5-9])[0-9]{8}\>" tel

搜索结果如图所示wKioL1ekq6WxyoO_AACPMayo1zA106.png

三:使用正则表达式搜索身份证号:

[root@centos7 test]# cat id

123456789876543210

130626199010016512def

130626199010016512

abc130626199010016512

160626199010016512

200626199010016515

220626199010016515

240626199010016515

30062619901001651X

32062619901001651X

38062619901001651X

402062620080808100

420626198002023518

42062619901001651X

462062620080808100

472062620080808100

500626199010016517

522122199808081671

520626199010016517

550626199010016517

560626199010016517

600626199010016519

650626199010016519

660626199010016519

70162619900231651X

71162619901001651X

720626199010016510

800626199010016511

987654328765432165

810626199002316511

810626201800016511

820626199010016511

820626101013326511

830626100100165119

584721520131499999

[root@centos7 test]# egrep "\<((1[1-5])|(2[1-3])|(3[1-7])|(4[1-6])|(5[0-4])|(6[1-5])|(71|81|82))([0-9]){4}(19|20)([0-9]){2}((0[1-9])|(1[0-2]))(0[1-9]|([0-9])|(2[0-9])|(3[0-1]))([0-9]){3}([0-9]|X)\>" id
  
130626199010016512

220626199010016515

32062619901001651X

420626198002023518

42062619901001651X

500626199010016517

522122199808081671

520626199010016517

650626199010016519

71162619901001651X

810626199002316511

820626199010016511

wKiom1elRhqTFUSNAABXMPOMfsk095.png

四:使用正则表达式取网络配置文件中的IP地址的过程解析:

取四段中的第一段

[root@centos7 test]# egrep "\<([1-9]|[1-9][0-9]|1[0-9][0-9]|2[0-1][0-9]|22[0-3])\>." /etc/sysconfig/network-scripts/ifcfg-eno16777728

IPADDR=10.1.254.254 
GATEWAY=10.1.0.1
DNS1=202.106.0.20

 取四段中的第二段

[root@centos7 test]# egrep "\<([1-9]|[1-9][0-9]|1[0-9][0-9]|2[0-1][0-9]|22[0-3])\>.(\<([0-9]|[1-9][0-9]|1[0-9][0-9]|2[0-4][0-9]|25[0-5])\>\.)" /etc/sysconfig/network-scripts/ifcfg-eno16777728

IPADDR=10.1.254.254
GATEWAY=10.1.0.1
DNS1=202.106.0.20

 取四段中的第三段

[root@centos7 test]# egrep "\<([1-9]|[1-9][0-9]|1[0-9][0-9]|2[0-1][0-9]|22[0-3])\>.(\<([0-9]|[1-9][0-9]|1[0-9][0-9]|2[0-4][0-9]|25[0-5])\>\.){2}" /etc/sysconfig/network-scripts/ifcfg-eno16777728

IPADDR=10.1.254.254
GATEWAY=10.1.0.1
DNS1=202.106.0.20

 取四段中的第四段

[root@centos7 test]# egrep "\<([1-9]|[1-9][0-9]|1[0-9][0-9]|2[0-1][0-9]|22[0-3])\>.(\<([0-9]|[1-9][0-9]|1[0-9][0-9]|2[0-4][0-9]|25[0-5])\>\.){2}\<([0-9]|[1-9][0-9]|1[0-9][0-9]|2[0-4][0-9]|25[0-4])\>" /etc/sysconfig/network-scripts/ifcfg-eno16777728 
 
IPADDR=10.1.254.254
GATEWAY=10.1.0.1
DNS1=202.106.0.20

只显示IP地址

[root@centos7 test]# egrep -o "\<([1-9]|[1-9][0-9]|1[0-9][0-9]|2[0-1][0-9]|22[0-3])\>.(\<([0-9]|[1-9][0-9]|1[0-9][0-9]|2[0-4][0-9]|25[0-5])\>\.){2}\<([0-9]|[1-9][0-9]|1[0-9][0-9]|2[0-4][0-9]|25[0-4])\>" /etc/sysconfig/network-scripts/ifcfg-eno16777728
  
10.1.254.254
10.1.0.1
202.106.0.20

wKioL1ekJZzS12d7AACxvie2GK0469.png

本文出自 “爱情防火墙” 的博客,请务必保留此出处:http://www.178linux.com/author/lovefirewall

原创文章,作者:爱情防火墙,如若转载,请注明出处:http://www.178linux.com/29995

(1)
爱情防火墙爱情防火墙
上一篇 2016-08-08 16:16
下一篇 2016-08-08 16:16

相关推荐

  • 谁说C语言很简单?

    前两天,Neo写了一篇《语言的歧义》其使用C语言讨论了一些语言的歧义。大家应该也顺便了解了一下C语言中的很多不可思异的东西,可能也是你从未注意到的东西。 是的,C语言并不简单,让我们来看看下面这些示例: 为什么下面的代码会返回0?(这题应该很简单吧) int x;   return x == (1&…

    Linux干货 2016-03-20
  • ​ 基于Sentinel实现redis主从自动切换

    Sentinel(哨兵)是用于监控redis集群中Master状态的工具,它可以实现对redis的监控、通知、自动故障转移。 Sentinel作用: Master状态检测 当被监控的某个 Redis Master异常无法连接时 Sentinel 可以向系统管理员发送通知, 也可以通过 API 向其他程序发送通知,并且进行Master-Slave切换,将其中一…

    Linux干货 2016-02-14
  • HTTP详解(2)-请求、响应、缓存

    1. HTTP请求格式              做过Socket编程的人都知道,当我们设计一个通信协议时,“消息头/消息体”的分割方式是很常用的,消息头告诉对方这个消息是干什么的,消息体告诉对方怎么干。HTTP协议传输的消息也是这样规定的…

    Linux干货 2015-04-04
  • ​HA专题: Corosync+Pacemaker+drbd实现MySQL高可用

    HA专题: Corosync+Pacemaker+drbd实现MySQL高可用 前言 实验拓扑 实验环境 实验步骤 安装前准备工作 配置DRBD 配置MySQL 配置Corosync+Pacemaker 测试 我遇到的问题 总结 前言 上篇文章我们介绍了drbd的相关原理、编译安装、简单的实现. drbd虽然可以保证数据的可靠性但是我们上次的实现还…

    Linux干货 2016-04-13
  • Linux的自动化安装实现

    在介绍自动化安装系统之前让我们来回顾一下系统的启动流程,系统的启动大概分为一下几个步骤:加电自检 boot sequence(mbr)— boot loader –>kernel(initramfs)—>rootfs  /sbin/init大概就是这么几个过程了,接下来来介绍系统的安装,安装系统虽然看起来简单,普…

    系统运维 2016-09-19
  • N25 _WSH 第二周

    2、bash 命令执行的状态结果:        * bash通过状态返回值来输出此结果:            * 成功:0            失败:1-255     &n…

    系统运维 2016-12-12