我尝试编写一个脚本。使用此脚本,我需要删除从某些命令输出解析的输出数字末尾的返回托架。所以我需要将它们转换为整数。但printf不会按照我想要的方式格式化数字:
echo $var
2.80985e+09
var=$(printf "%s" "$var" | tr -dc '[:digit:]' )
echo $var
28098509
正如您所看到的,printf删除了托架,但也修改了变量的值。但我希望这个值保持不变,只返回回车。我应该在printf中使用哪个参数?
由于
答案 0 :(得分:0)
也许你想这样做:
$ printf "%f\n" $var
2809850000.000000
或者这个:
$ printf "%f\n" $var | sed -e 's/\..*//'
2809850000
答案 1 :(得分:0)
printf
没有修改变量的值; tr
做到了。您可以通过以下方式验证:
$ printf "%s\n" "$var"
2.80985e+09
$ printf "%s\n" "$var" | tr -dc '[:digit:]'
28098509
tr
命令,如下所示,删除所有非数字字符。
答案 2 :(得分:0)
你的tr
命令说'删除所有非数字',所以就这样做了。你应该期望程序完全按照你告诉他们的方式完成。整个var=$(...)
序列很奇怪。要删除回车,您可以使用:
var=$(tr -d '\013' <<< $var)
<<<
重定向发送字符串(值$var
)作为命令的标准输入。