2016-08-11 7 views
1

最初の文字列はRU="903B/100ms" です。B/100msを取得します。パラメータ拡張を使用してBashを使用して文字列の先頭桁を削除します。

現在、私が書かれている:

パラメータ展開はまで削除し、最初の非数値文字を含むので、 /100msを返し
#!/bin/bash 
RU="903B/100ms" 
RU=${RU#*[^0-9]} 
echo $RU 

。この場合、最初の非数字文字を保持したいと思います。上記のテキストを修正することで、私はどのようにしてこれを行うのですか?

shopt -s extglobと仮定すると

答えて

2

をあなたが希望一致する値を抽出するためにBASH_REMATCHを使用することができます。

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

それともとして所望の部分をキャッチ:

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

ありがとう!私がここに来て以来、stackoverflowによると私の感謝は一時的に無意味です。) – AASJC

+0

@AASJCあなたの親切な言葉は、いくつかの仮想的な点より意味があります:) – fedorqui

0
echo "903B/100ms" | sed 's/^[0-9]*//g' 
B/100ms 
+0

感謝を、しかし好ましくはパラメータ拡張を使用して?これは私がやっているより一般的な仕事の特別なケースです – AASJC

関連する問題