> 一篇文章让你明白正则表达式:
这里用虚拟机进行演示
修改主机名为:abcd-efgh-ijkl-123-4213
这里我们使用静态模式修改主机名
这里说明一下,静态模式下修改主机名无需重启设备,可直接生效
[root@SpiralStory ~]# hostnamectl set-hostname --static abcd-efgh-ijkl-123-4213
[root@SpiralStory ~]# bash
[root@abcd-efgh-ijkl-123-4213 ~]# cat /etc/hostname
abcd-efgh-ijkl-123-4213
精确匹配主机名
cat /etc/hostname | egrep -w ‘[a-z]{4}’-’[a-z]{4}’-’[a-z]{4}’-’[0-9]{3}’-’[0-9]{4}’
这里说明下参数含义:
egrep -w /精确匹配某字符串
'[a-z]' /正则匹配包含a到z的字符串
‘[0-9]’ /正则匹配包含0到9的字符串
‘[a-z]{4}’ /正则匹配包含a到z并且长度为4的字符串
‘[0-9]{4}’ /正则匹配包含0到9并且长度为4的字符串
’[a-zA-Z0-9]{4}‘ /正则匹配包含大小写a到z 0到9并且长度为4的字符串
’[a-zA-Z0-9]{4,7}‘ /正则匹配包含大小写a到z 0到9并且长度为4到7的字符串
如下结果:
[root@abcd-efgh-ijkl-123-4213 ~]# cat /etc/hostname | egrep -w '[a-z]{4}'-'[a-z]{4}'-'[a-z]{4}'-'[0-9]{3}'-'[0-9]{4}'
abcd-efgh-ijkl-123-4213
模糊精准匹配主机名:
[root@abcd-efgh-ijkl-123-4213 ~]# hostnamectl set-hostname --static abcd-efgh-ijkl123-4213
[root@abcd-efgh-ijkl-123-4213 ~]# bash
[root@abcd-efgh-ijkl123-4213 ~]# cat /etc/hostname abcd-efgh-ijkl123-4213
[root@abcd-efgh-ijkl123-4213 ~]# cat /etc/hostname | egrep -w '[a-z]{4}'-'[a-z]{4}'-'[a-zA-Z0-9]{1,7}'-'[0-9]{1,4}'
abcd-efgh-ijkl123-4213
匹配mac地址:
[root@abcd-efgh-ijkl123-4213 ~]# ip a | egrep -w '[a-z]{2}':'[a-z]{2}':'[a-z]{2}':'[a-z]{2}':'[a-z]{2}':'[a-z]{2}'
link/ether 00:0c:29:61:fc:03 brd ff:ff:ff:ff:ff:ff
link/ether 52:54:00:b9:f7:73 brd ff:ff:ff:ff:ff:ff
link/ether 52:54:00:b9:f7:73 brd ff:ff:ff:ff:ff:ff
我们都知道mac地址是6位字符串,所以还可以用这种方法:
[root@abcd-efgh-ijkl123-4213 ~]# ifconfig ens33 | egrep -v no | grep ether | head -n 1 | grep -o "[a-f0-9A-F]\\([a-f0-9A-F]\\:[a-f0-9A-F]\\)\\{5\\}[a-f0-9A-F]"
00:0c:29:61:fc:03
匹配网址:
^(?=^.{3,255}$)(http(s)?:\/\/)?(www\.)?[a-zA-Z0-9][-a-zA-Z0-9]{0,62}(\.[a-zA-Z0-9][-a-zA-Z0-9]{0,62})+(:\d+)*(\/\w+\.\w+)*$
例如: http://www.baidu.com
匹配http url:
^(?=^.{3,255}$)(http(s)?:\/\/)?(www\.)?[a-zA-Z0-9][-a-zA-Z0-9]{0,62}(\.[a-zA-Z0-9][-a-zA-Z0-9]{0,62})+(:\d+)*(\/\w+\.\w+)*([\?&]\w+=\w*)*$
例如: http://www.tetet.com/index.html?q=1&m=test