1

最初の文字列はRU="903B/100ms" 、私が取得したいものB/100msです。

現在、私は書いています:

#!/bin/bash
RU="903B/100ms"
RU=${RU#*[^0-9]}
echo $RU 

/100msこれは、パラメーター展開によって最初の非数値文字までが削除されるため、返されます。この場合、最初の数字以外の文字を保持したいと思います。上記のテキストを修正してこれを行うにはどうすればよいですか?

4

3 に答える 3

2

BASH_REMATCHを使用して、目的の一致値を抽出できます。

$ RU="903B/100ms"
$ [[ $RU =~ ^([[:digit:]]+)(.*) ]] && echo ${BASH_REMATCH[2]}
B/100ms

または、目的の部分を次のようにキャッチします。

$ [[ $RU =~ ^[[:digit:]]+(.*) ]] && echo ${BASH_REMATCH[1]}
B/100ms
于 2016-08-11T11:09:00.730 に答える
2

仮定shopt -s extglob

RU="${RU##+([0-9])}"
于 2016-08-11T11:04:22.373 に答える
0
echo "903B/100ms" | sed 's/^[0-9]*//g'
B/100ms
于 2016-08-11T10:59:59.200 に答える