shell正則匹配捕獲引用進行IP匹配

roc_guo發表於2023-05-02

在伺服器上加了一個服務檢測機制,用到正則來匹配IP和捕獲分組。 和其他語言一樣也可以使用正則分組捕獲,不過不能使用 $1或1這樣的形式來捕獲分組,可以透過陣列${BASH_REMATCH}來獲得,如${BASH_REMATCH[1]},${BASH_REMATCH[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


來自 “ ITPUB部落格 ” ,連結:http://blog.itpub.net/69901823/viewspace-2949679/,如需轉載,請註明出處,否則將追究法律責任。

相關文章