我的脚本中有一个问题,我正在读取文件,并且每一行都有代表金额的数据。所述字段的长度始终为12,并且始终为整数。假设我有25,000,数据看起来像这样000000025000
。
显然,我必须获得这些行的总数,但是零前缀正在干扰计算。如果我将上述数字添加到这样的零值:
echo $(( 0 + 000000025000 ))
我得到25000
而不是10752
。我当时想遍历000000025000
,当我最终得到一个非零值时,我将从该索引开始对数字进行子串化。但是,我希望对此必须有一个更优雅的解决方案。
答案 0 :(得分:2)
数字000000025000
是一个以0
开头的八进制数字。
如果将bash用作shell,则可以使用前缀10#
强制将基数设置为十进制:
echo $(( 10#000000025000 ))
在bash手册页中:
以0开头的常量被解释为八进制数。前导0x或0X表示十六进制。否则,数字采用[base#] n的形式,其中可选的底数是2到64之间的十进制数字,代表算术底数,而n是该底数中的数字。
答案 1 :(得分:0)
使用Perl
$ echo "000000025000" | perl -ne ' { printf("%d\n",scalar($_)) } '
25000