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
原文地址:http://yujiqing.blog.51cto.com/1475974/1614830