Shell脚本中通过正则表达式匹配IP地址
程序员文章站
2022-06-02 08:29:18
在运维场景下,我们经常需要在服务器上用正则表达式来匹配ip地址。
shell和其它编程语言一样,也可以使用正则分组捕获,不过不能使用 $1或\1这样的形式来捕获分组,可以...
在运维场景下,我们经常需要在服务器上用正则表达式来匹配ip地址。
shell和其它编程语言一样,也可以使用正则分组捕获,不过不能使用 $1或\1这样的形式来捕获分组,可以通过数组${bash_rematch}来获得,如${bash_rematch[1]},${bash_rematch[n]}
下面以ip="121.0.2.2"为例,shell脚本代码如下(当然,你要做成更通用交互式的脚本,可以通过expect来实现):
复制代码 代码如下:
#!/bin/bash
ip="121.0.2.2"
if [[ $ip =~ ^([0-9]{1,2}|1[0-9][0-9]|2[0-4][0-9]|25[0-5])\.([0-9]{1,2}|1[0-9][0-9]|2[0-4][0-9]|25[0-5])\.([0-9]{1,2}|1[0-9][0-9]|2[0-4][0-9]|25[0-5])\.([0-9]{1,2}|1[0-9][0-9]|2[0-4][0-9]|25[0-5])$ ]]
then
echo "match"
echo ${bash_rematch[1]}
echo ${bash_rematch[2]}
echo ${bash_rematch[3]}
echo ${bash_rematch[4]}
else
echo "not match"
fi
下一篇: 鸭肠怎么做好吃?小编带你了解一下