欢迎您光临本站,如有问题请及时联系我们。

如何在shell脚本中通过正则表达式匹配IP地址?

运维场景下,我们经常需要在服务器上用正则表达式来匹配IP地址。

shell和其它编程语言一样,也可以使用正则分组捕获,不过不能使用 $1或/1这样的形式来捕获分组,可以通过数组${BASH_REMATCH}来获得,如${BASH_REMATCH[1]},${BASH_REMATCH[N]}

下面以ip=”121.0.2.2″为例,shell脚本代码如下(当然,你要做成更通用交互式的脚本,可以通过expect来实现):
[code lang=”shell”]#!/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[/code]

来源:本文由E8运维原创撰写,欢迎分享本文,转载请保留出处和链接!