码迷,mamicode.com
首页 > 其他好文 > 详细

Egrep 扩展正则表达式及实例

时间:2015-02-20 00:18:24      阅读:243      评论:0      收藏:0      [点我收藏+]

标签:egrep 扩展正则表达式及实例

grep -E  [OPTIONS] PATTERN [FILE...]

-E:扩展正则表达式

字符匹配

.:任意单个字符

[]:指定范围内的任意单个字符

[^]:指定范围外的任意单个字符

次数匹配

*:匹配其前字符任意次

?:匹配其前字符0次或1次,不需要加反钭线\

+:匹配其前字符至少一次,相当于\{1,\}(?+组合相当于*)

{m,n}:匹配其前字符至少m次至多n次,不需要加反钭线\

位置锚定

^ CHARE:行首锚定

CHARE $:行尾锚定

\< CHARE:词首锚定

CHARE \>:词尾锚定

分组:

():不需要加反钭线\,后向引用\1,\2,\3......

或者

|:表示or,其匹配的是坚线前面和后面的整体部分

如:文件内容如下

[root@station01 ~]# cat test5.txt 

b

bag

banana

Back

执行结果:

[root@station01 ~]# grep --color  -E ‘b|bag‘ test5.txt 

b

bag

banana

即匹配的只是b和bag

文件内容如下:

[root@station01 ~]# cat test5.txt

b

bag

banana

Back

Bag

执行结果如下:

[root@station01 ~]# grep --color  -E ‘(B|b)ag‘ test5.txt 

bag

Bag

即匹配的是bag或Bag,这就是分组的概念


如找出/boot/grub/grub.conf文件中至少一个空白字符开头的行

执行结果如下:

[root@station01 ~]# grep -E ‘^[[:space:]]+‘ /boot/grub/grub.conf             

        root (hd0,0)

        kernel /vmlinuz-2.6.32-71.el6.i686 ro root=/

如:

找出/boot/grub/grub.conf文件中1-255之间的数字

执行结果如下:

[root@station01 ~]# grep --color -E ‘\<([1-9]|[1-9][0-9]|1[0-9][0-9]|2[0-4][0-9]|25[0-5])\>‘ /boot/grub/grub.conf 

timeout=5

title Red Hat Enterprise Linux (2.6.32-71.el6.i686)

        kernel /vmlinuz-2.6.32-71.el6.i686 ro root=/dev/mapper/vg_station01-lv_root rd_LVM_LV=vg_station01/lv_root rd_LVM_LV=vg_station01/lv_swap rd_NO_LUKS rd_NO_MD rd_NO_DM LANG=en_US.UTF-8 SYSFONT=latarcyrheb-sun16 KEYBOARDTYPE=pc KEYTABLE=us crashkernel=auto rhgb quiet

        initrd /initramfs-2.6.32-71.el6.i686.img

找出ifconfig文件中1-255的数字

执行结果如下:

[root@station01 ~]# ifconfig |  grep --color -E ‘\<([1-9]|[1-9][0-9]|1[0-9][0-9]|2[0-4][0-9]|25[0-5])\>‘

eth0      Link encap:Ethernet  HWaddr 00:0C:29:52:C5:1B  

          inet addr:172.24.5.56  Bcast:172.24.5.255  Mask:255.255.255.0

          inet6 addr: fe80::20c:29ff:fe52:c51b/64 Scope:Link

          UP BROADCAST RUNNING MULTICAST  MTU:1500  Metric:1

          RX bytes:1793759242 (1.6 GiB)  TX bytes:4462480 (4.2 MiB)

          Interrupt:19 Base address:0x2000 

          inet addr:127.0.0.1  Mask:255.0.0.0

          inet6 addr: ::1/128 Scope:Host

          UP LOOPBACK RUNNING  MTU:16436  Metric:1

          RX bytes:76440 (74.6 KiB)  TX bytes:76440 (74.6 KiB)

找出ifconfig文件中点分十进制的类似ip地址的数字

执行结果如下:

1)

[root@station01 ~]# ifconfig | egrep -o ‘\<([0-9]|[1-9][0-9]|1[0-9][0-9]|2[0-4][0-9]|25[0-5])\>\.\<([0-9]|[1-9][0-9]|1[0-9][0-9]|2[0-4][0-9]|25[0-5])\>\.\<([0-9]|[1-9][0-9]|1[0-9][0-9]|2[0-4][0-9]|25[0-5])\>\.\<([0-9]|[1-9][0-9]|1[0-9][0-9]|2[0-4][0-9]|25[0-5])\>‘

172.24.5.56

172.24.5.255

255.255.255.0

127.0.0.1

255.0.0.0

2)

[root@station01 ~]# ifconfig | egrep --color  ‘\<([0-9]|[1-9][0-9]|1[0-9][0-9]|2[0-4][0-9]|25[0-5])\>\.\<([0-9]|[1-9][0-9]|1[0-9][0-9]|2[0-4][0-9]|25[0-5])\>\.\<([0-9]|[1-9][0-9]|1[0-9][0-9]|2[0-4][0-9]|25[0-5])\>\.\<([0-9]|[1-9][0-9]|1[0-9][0-9]|2[0-4][0-9]|25[0-5])\>‘

          inet addr:172.24.5.56  Bcast:172.24.5.255  Mask:255.255.255.0

          inet addr:127.0.0.1  Mask:255.0.0.0

3)次数匹配

[root@station01 ~]# ifconfig | egrep --color ‘(\<([0-9]|[1-9][0-9]|1[0-9][0-9]|2[0-4][0-9]|25[0-5])\>\.){3}\<([0-9]|[1-9][0-9]|1[0-9][0-9]|2[0-4][0-9]|25[0-5])\>‘

          inet addr:172.24.5.56  Bcast:172.24.5.255  Mask:255.255.255.0

          inet addr:127.0.0.1  Mask:255.0.0.0

4)

找出ifconfig文件中A类(1-127)、B类(128-191)、C类(192-223)IP地址

[root@station01 ~]# ifconfig | egrep --color ‘\<([1-9]|[1-9][0-9]|1[0-9][0-9]|2[01][0-9]|22[0-3])\>(\.\<([0-9]|[1-9][0-9]|1[0-9][0-9]|2[0-4][0-9]|25[0-4])\>){2}\.\<([0-9]|[1-9][0-9]|1[0-9][0-9]|2[0-4][0-9]|25[0-4])\>‘

          inet addr:172.24.5.56  Bcast:172.24.5.255  Mask:255.255.255.0

          inet addr:127.0.0.1  Mask:255.0.0.0

2015年2朋18日

GB-2312

本文出自 “无知有知” 博客,请务必保留此出处http://yujiqing.blog.51cto.com/1475974/1614830

Egrep 扩展正则表达式及实例

标签:egrep 扩展正则表达式及实例

原文地址:http://yujiqing.blog.51cto.com/1475974/1614830

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!