2017-07-28 30 views
1

私はバージョン文字列を持っている、例bashのパラメータ代替桁1回以上

version=1.2.23b2 

のために、私はb2と最後の部分だけを持つようにしたいので、私はこの試みた:

${version##*[0-9]*.[0-9]*.[0-9]*} 

を私の考えは、*というのは、先行パターンが何もない、あるいは何回も繰り返されていることを意味します。だから私は、私のパターンが表現することを望みます、これは1桁以上の数字だけです。

答えて

1

*グロブパターンでは、任意の文字が0回以上一致します。

あなたがここに拡張されたグロブパターンを使用することができます。

shopt -s extglob 
echo "${version##+([0-9.])}" 
b2 

さもないと、あなたはここに正規表現を使用することができます。

version='1.2.23b2' 
re='^[0-9]+.[0-9]+.[0-9]+(.+)' 
[[ $version =~ $re ]] && echo "${BASH_REMATCH[1]}" 

b2 

でも、この正規表現は、上記動作するはずです:

re='^[0-9.]+(.+)' 
関連する問題