2016-09-27 73 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) –

相关问题