shell——正則匹配


在看一個mysql的helm-charts的時候,看到一段shell代碼,才發現原來shell也能支持正則匹配。那很多場景就不需要用awk,grep這些了,會簡潔很多。

demo1

if [[ abcfoobarbletch =~ 'foo(bar)bl(.*)' ]]
 then
         echo The regex matches!
         echo $BASH_REMATCH      -- outputs: foobarbletch
         echo ${BASH_REMATCH[1]} -- outputs: bar
         echo ${BASH_REMATCH[2]} -- outputs: etch
 fi

使用內置變量BASH_REMATCH獲取匹配后的值,該變量是只讀數組。

$BASH_REMATCH和${BASH_REMATCH[0]}都是整個匹配結果。

${BASH_REMATCH[1]}是第一個括號內的匹配值。

 

demo2

[[ 'web-01' =~ -([0-9]+)$ ]] || exit 1
echo ${BASH_REMATCH[0]}
-01
echo ${BASH_REMATCH[1]}
01

這段可以用於快速獲取pod的索引,這是同一個應用的pod的不重復標識,可以用於找到特定帶狀態的pod。

 

參考文檔:bash的BASH_REMATCH變量 – SRE筆記


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM