我有下面的 Bash 脚本,试图捕获“pingnet”的最后一位数字,但无法获得匹配。我在 regex101 中验证,我的正则表达式是正确的:
pingnet="pingcount,site=DC,cur=200 total-up=988"
regex='(\d+)$'
if [[ $pingnet =~ $regex ]]
then
echo "YES"
echo "${BASH_REMATCH[1]}"
else
echo "NOT"
echo "${BASH_REMATCH[1]}"
fi
运行脚本的结果不是。
答案1
Bash 的正则表达式语法无法识别\d
;使用[[:digit:]]
:
pingnet="pingcount,site=DC,cur=200 total-up=988"
regex='([[:digit:]]+)$'