最初の文字列はRU="903B/100ms"
、私が取得したいものB/100ms
です。
現在、私は書いています:
#!/bin/bash
RU="903B/100ms"
RU=${RU#*[^0-9]}
echo $RU
/100ms
これは、パラメーター展開によって最初の非数値文字までが削除されるため、返されます。この場合、最初の数字以外の文字を保持したいと思います。上記のテキストを修正してこれを行うにはどうすればよいですか?
最初の文字列はRU="903B/100ms"
、私が取得したいものB/100ms
です。
現在、私は書いています:
#!/bin/bash
RU="903B/100ms"
RU=${RU#*[^0-9]}
echo $RU
/100ms
これは、パラメーター展開によって最初の非数値文字までが削除されるため、返されます。この場合、最初の数字以外の文字を保持したいと思います。上記のテキストを修正してこれを行うにはどうすればよいですか?
BASH_REMATCHを使用して、目的の一致値を抽出できます。
$ RU="903B/100ms"
$ [[ $RU =~ ^([[:digit:]]+)(.*) ]] && echo ${BASH_REMATCH[2]}
B/100ms
または、目的の部分を次のようにキャッチします。
$ [[ $RU =~ ^[[:digit:]]+(.*) ]] && echo ${BASH_REMATCH[1]}
B/100ms
仮定shopt -s extglob
:
RU="${RU##+([0-9])}"
echo "903B/100ms" | sed 's/^[0-9]*//g'
B/100ms