2016-09-27 74 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」

謝謝!

編輯: 如果我把文件($號> file.txt的),並開放使用vi和$號:設置列表我得到:

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

你的例子很混亂,特別是因爲你沒有在變量周圍使用引號(例如, 'echo「$ number」'),所以輸出被破壞。說實話,看起來好像主要問題是你在做'echo $ number |' grep'而不是'echo「$ number」| grep'。 –

+0

謝謝Tom幫忙。我用引號編輯mi帖子:) –

回答

1

取而代之的是:

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

試試這個:

​​3210

,甚至更好,這一個:

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

感謝您的回覆!但沒有工作。第一個選項我得到這個輸出:reg:1034 420,第二個是這個:1034420 –

+0

當你運行上面幾行時'$ number'的確切值是多少? – redneb

+0

我在mi post中編輯號碼的值。它的號碼是: /> ------- />(附帶\ n) –

相關問題