我目前有一个bash脚本,它为我提供了诸如 26084729776630091742 之类的数字。这个数字被转换为 26,084729776630091742 ,最后18位是小数位,但我怎么能用bash转换呢?
(我要转换的数字是一个名为WEI的以太坊单位,18个最后的数字是小数位。所以在前两位数之后加点不起作用。)
答案 0 :(得分:4)
<强> EDIT2: 强>
echo "128084729776630091742" | awk '{gsub(/,/,"");print substr($0,1,length($0)-18) "," substr($0,length($0)-17)}'
编辑: 由于OP更改了示例,因此现在添加此代码。
echo "128,6436xxxx" | awk '{gsub(/,/,"");print substr($0,1,2) "," substr($0,3)}'
如果您只是寻找这个具体的例子,那么以下内容可能对您有帮助。
echo "26084729776630091742" | awk '{print substr($0,1,2) "," substr($0,3)}'
解决方案第二: 使用sed
。
echo "26084729776630091742" | sed 's/\(..\)\(.*\)/\1,\2/'
答案 1 :(得分:3)
您正在寻找的是:"${str:0:2},${str:2}"
您案例中的示例:
str="26084729776630091742"
echo "${str:0:2},${str:2}"
打印26,084729776630091742
编辑问题已被准确
str="26084729776630091742133"
echo "${str:0:${#str}-18},${str:${#str}-18}"
打印26084,729776630091742133
,小数点后18位(如果${#str}
&gt;则可以正常工作18)