在BASH脚本中提取子字符串作为数字处理的字符

时间:2016-09-27 15:23:21

标签: string bash grep substring character

我需要在bash脚本中提取字符串的子字符串。 这是带有“echos”的代码:

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

问题是$ number的特殊字符。

你可以帮我提取数字吗?在这种情况下是“421”

感谢!!!

编辑: 如果我将$ number放入文件($ number&gt; file.txt)并使用vi打开:set list i get:

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

1 个答案:

答案 0 :(得分:1)

而不是:

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

试试这个:

registers="$(grep -oE '[0-9]+' <<< "$number")"

甚至更好,这一个:

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