在bash中以某种方式格式化数字

时间:2014-07-29 15:32:25

标签: bash variables sed formatting

我使用的程序从文本文件中获取输入,并期望处理货币的字符串格式为XXXX.XX

我希望能够输入数字的相关部分,并让我的脚本根据需要添加前导零和/或尾随点和零。例如,要输入1.1并将其格式化为0001.10,请输入32并将其格式化为0032.00,输入.99并将其格式化为0000.99等。

纯粹用bash做这件事会很好,但是像sed一样调用其他东西也会没问题。

2 个答案:

答案 0 :(得分:5)

您可以像这样使用printf

s='32'
printf "%07.2f\n" "$s"
0032.00

s='1.1'
printf "%07.2f\n" "$s"
0001.10

s='.99'
printf "%07.2f\n" "$s"
0000.99

说明:此格式%07.2f使用:

  • 0,如果需要,可以使用零填充
  • 7的总宽度为7(包括小数点)
  • .2f用于指定2个小数位

答案 1 :(得分:1)

printf "%07.2f" <input>

实施例: printf "%07.2f" .99 = 0000.99