【发布时间】:2017-02-05 07:29:48
【问题描述】:
我需要在 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
问题在于 $number 的特殊字符。
你能帮我只提取数字吗?在这种情况下是“421”
谢谢!!!
编辑: 如果我将 $number 放入文件 ($number> file.txt) 并使用 vi 和 :set list 打开,我会得到:
^[[?1034h/ > -------$
420$
/ > $
【问题讨论】:
-
您的示例令人困惑,特别是因为您没有在变量周围使用引号(例如
echo "$number"),因此输出被破坏了。老实说,看起来主要问题是你在做echo $number | grep而不是echo "$number" | grep。 -
感谢汤姆的帮助。我用引号编辑 mi 帖子 :)
标签: string bash grep substring character