在運維場景下,我們經(jīng)常需要在服務(wù)器上用正則表達(dá)式來匹配IP地址。
shell和其它編程語言一樣,也可以使用正則分組捕獲,不過不能使用 $1或/1這樣的形式來捕獲分組,可以通過數(shù)組${BASH_REMATCH}來獲得,如${BASH_REMATCH[1]},${BASH_REMATCH[N]}
下面以ip="121.0.2.2"為例,shell腳本代碼如下(當(dāng)然,你要做成更通用交互式的腳本,可以通過expect來實現(xiàn)):
 代碼如下:
#!/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
新聞熱點
疑難解答