正则表达式

正则表达式 
regular expression
reg regex


正则
1、基本正则
a a
[0-9] 区间
[a-z] 区间
[acof] 集合
^ 开始
$ 结尾
[^ab] 取反,不要a或b
. 任意单个字符
* 前一个字符出现了任意次
.* 所有
\{n,m\} 前一个字符出现了n到m次
\{n,\} 前一个字符出现了n次以上
\{n\} 前一个字符出现了n次
\(\) 保留

 

姓名对调
\(姓\) \(名\) ====> \2\1

[root@room1pc01 ~]# cat a.txt
jacobxjacobujacobpjacob-jacob=jacob
[root@room1pc01 ~]# grep "\(jacob\)x\1u\1p\1-\1\=\1" a.txt
jacobxjacobujacobpjacob-jacob=jacob

[root@room1pc01 ~]# cat a.txt
jacobxjacobxjacobxjacobxjacobxjacob
[root@room1pc01 ~]# grep "\(jacob\)\(x\)\1\2\1\2\1\2\1\2\1" a.txt
jacobxjacobxjacobxjacobxjacobxjacob
[root@room1pc01 ~]# grep "\(jacobx\)\{5\}" a.txt
jacobxjacobxjacobxjacobxjacobxjacob


2、扩展正则【增强,优化】
{n,m} 前一个字符出现了n到m次
() 1、保留,2、里面的内容作为一个整体(ab),3、里面的内容支持竖线(a|b)。
? 前面的内容,出现了0次或者1次
+ 前面的内容,出现了1次以上


基本正则,兼容性强(支持的软件多)
扩展正则,功能强(支持的软件少)

() 组合为整体 ab{1,3} 匹配ab、abb、abbb (ab){1,3} 匹配 ab abab ababab
| 或者 root|bin 匹配root、bin
\b 单词的边界 \broot\b 匹配单词root ,不匹配keroot、rooty、brooty等字符串
\< 单词的开头 \<th 匹配以th开头的单词
\> 单词的结束 \<root\> 作用于 \broot\b 相同

过滤IP地址
[root@room1pc01 ~]# ifconfig|grep "\([0-9]\{1,3\}\.\)\{3\}[0-9]\{1,3\}"
inet addr:127.0.0.1 Mask:255.0.0.0
inet addr:192.168.4.254 Bcast:192.168.4.255 Mask:255.255.255.0
inet addr:192.168.2.254 Bcast:192.168.2.255 Mask:255.255.255.0
inet addr:201.1.1.254 Bcast:201.1.1.255 Mask:255.255.255.0
inet addr:201.1.2.254 Bcast:201.1.2.255 Mask:255.255.255.0
inet addr:192.168.122.1 Bcast:192.168.122.255 Mask:255.255.255.0

过滤MAC地址
[root@room1pc01 ~]# ifconfig|grep "\([0-F]\{2\}:\)\{5\}[0-F]\{2\}"
br0 Link encap:Ethernet HWaddr EE:6D:D2:05:BD:96
private1 Link encap:Ethernet HWaddr 52:54:00:96:11:64
private2 Link encap:Ethernet HWaddr 52:54:00:F3:BB:70
public1 Link encap:Ethernet HWaddr 52:54:00:3D:6A:01
public2 Link encap:Ethernet HWaddr 52:54:00:3D:6A:C1
virbr0 Link encap:Ethernet HWaddr 52:54:00:F5:B9:30
vnet0 Link encap:Ethernet HWaddr FE:52:01:01:01:01
vnet1 Link encap:Ethernet HWaddr FE:52:01:01:01:02
vnet2 Link encap:Ethernet HWaddr FE:52:01:01:01:03
vnet3 Link encap:Ethernet HWaddr FE:52:01:01:01:04
vnet4 Link encap:Ethernet HWaddr FE:52:01:01:02:01
vnet5 Link encap:Ethernet HWaddr FE:52:01:01:02:02
vnet6 Link encap:Ethernet HWaddr FE:52:01:01:02:03
vnet7 Link encap:Ethernet HWaddr FE:52:01:01:02:04

posted @ 2021-09-17 13:57  Linux刀客  阅读(29)  评论(0编辑  收藏  举报