Shell腳本中通過(guò)正則表達(dá)式匹配IP地址
在運(yùn)維場(chǎng)景下,我們經(jīng)常需要在服務(wù)器上用正則表達(dá)式來(lái)匹配IP地址。
shell和其它編程語(yǔ)言一樣,也可以使用正則分組捕獲,不過(guò)不能使用 $1或\1這樣的形式來(lái)捕獲分組,可以通過(guò)數(shù)組${BASH_REMATCH}來(lái)獲得,如${BASH_REMATCH[1]},${BASH_REMATCH[N]}
下面以ip="121.0.2.2"為例,shell腳本代碼如下(當(dāng)然,你要做成更通用交互式的腳本,可以通過(guò)expect來(lái)實(shí)現(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
相關(guān)文章
linux 創(chuàng)建守護(hù)進(jìn)程的相關(guān)知識(shí)
這篇文章主要介紹了linux 創(chuàng)建守護(hù)進(jìn)程的相關(guān)知識(shí),需要的朋友可以參考下2014-01-01java應(yīng)用啟動(dòng)與停止的shell腳本分享
這篇文章主要和大家分享三個(gè)shell腳本,分別是jvm啟動(dòng)參數(shù)相關(guān)的setjvment.sh,利用java命令啟動(dòng)進(jìn)程的start.sh和停止java進(jìn)程的stop.sh,有需要的可以參考下2023-10-10Linux下自動(dòng)刪除過(guò)期備份和自動(dòng)異地備份的腳本
這篇文章主要介紹了Linux下自動(dòng)刪除過(guò)期備份和自動(dòng)異地備份,本文給大家介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或工作具有一定的參考借鑒價(jià)值,需要的朋友可以參考下2022-09-09linux shell中 if else以及大于、小于、等于邏輯表達(dá)式介紹
在linux shell編程中,大多數(shù)情況下,可以使用測(cè)試命令來(lái)對(duì)條件進(jìn)行測(cè)試,這里簡(jiǎn)單的介紹下,方便需要的朋友2013-02-02linux Shell獲取某目錄下所有文件夾的名稱(chēng)
這篇文章主要介紹了linux Shell獲取某目錄下所有文件夾的名稱(chēng),需要的朋友可以參考下2017-05-05Linux應(yīng)用調(diào)試之strace命令詳解
strace常用來(lái)跟蹤進(jìn)程執(zhí)行時(shí)的系統(tǒng)調(diào)用和所接收的信號(hào)。下面通過(guò)本文給大家分享Linux應(yīng)用調(diào)試之strace命令,需要的朋友參考下吧2017-12-12Ubuntu下定時(shí)提交代碼到SVN服務(wù)器的Shell腳本分享
這篇文章主要介紹了Ubuntu下定時(shí)提交代碼到SVN服務(wù)器的Shell腳本分享,本文直接給出實(shí)現(xiàn)代碼,需要的朋友可以參考下2015-03-03非常好的12道shell命令經(jīng)典面試問(wèn)題
shell面試題總結(jié)了一些,讓我們一起看一下吧,非常好的12道shell命令經(jīng)典面試問(wèn)題,需要的朋友可以參考下2018-02-02