2016-09-27 3 views
-1

bashスクリプトで文字列の部分文字列を抽出する必要があります。 これは、 "エコー" とのコードです:BASHスクリプトで部分文字列を抽出する数値として扱われる文字。

echo "number:" 
echo "$number" 
echo "bb" 
registers3=$(echo $number | grep -o -E '[0-9]+') 
registers2="$(grep -oE '[0-9]+' <<< "$number")" 
registers="${number//[^0-9]/}" 
valor=$(grep -o "[0-9]" <<<"$number") 
echo "valor:" 
echo $valor 
echo "reg:" 
echo "$registers" 
echo "reg2:" 
echo "$registers2" 
echo "reg3:" 
echo "$registers3" 

そして、この出力:

number: 
/> ------- 
420 
/> 
bb 
valor: 
1 0 3 4 4 2 0 
reg: 
1034420 
reg2: 
1034 
420 
reg3: 
1034 
420 

問題は$数の特殊文字です。

数字だけを抽出するのに役立ちますか?この場合「421」

ありがとうございます!

EDIT: 私はviとしたファイル($番号> file.txtなど)やオープンで$番号を置く場合:セットリスト私が手:この代わりの

^[[?1034h/ > -------$ 
420$ 
/> $ 
+0

あなたの例は混乱しています。特に、変数の前後に引用符を使用していないためです。 'echo" $ number "')、出力がマングルされます。正直言って、主な問題は 'echo $ number | 'echo"の代わりに 'grep'を使います。 grep' –

+0

おかげでトムは助けになった。私は引用符でmiの投稿を編集:) –

答えて

1

registers=$(echo $number | grep -o -E '[0-9]+') 

これを試してみてください。

​​3210

またはより良い、この1:

registers="${number//[^0-9]/}" 
+0

返信いただきありがとうございます!仕事はできません。最初のオプションでは次の出力が得られます:reg:1034 420と2番目の値:1034420 –

+0

上記の行を実行したときの '$ number'の正確な値は何でしたか? – redneb

+0

番号iの値はmi postで編集します。それは数字です: /> - />(\ n) –

関連する問題