[英]How do I perform a simple regular expression match in bash?
我正在嘗試匹配字符串開頭的數字
452MATCHME
有了這個簡單的正則表達式
/^\d*/
我希望這個結果保存在一個變量中
452
但我無法找到獲得操作結果的方法。 我已經閱讀了本教程 ,但它描述了一個數組BASH_REMATCH
,其中存儲了=~
操作的所有匹配結果。 出於某種原因,在我的情況下,該數組不存在。 我正在使用bash版本4.2.10(1)。
我能想到的唯一另一個選擇是grep
,但據我所知,只能輸出與正則表達式匹配的行。
我怎樣才能達到我的結果?
var=452MATCHME
echo ${var%%[^0-9]*}
這將從第一個非數字刪除到結尾。
對於大多數情況,Bash參數已足夠,所以我建議您熟悉它。 以下是bash模式的鏈接: http : //www.gnu.org/software/bash/manual/bashref.html#Pattern-Matching
這將工作:
if [[ "452MATCHME" =~ ^([0-9]+).* ]]
then
echo ${BASH_REMATCH[1]};
fi
PS:我正在使用bash 3.0版本,它只是你的正則表達形式不好。
所以似乎問題是BASH正則表達式不支持\\d
。 請改用[0-9]
。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.