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

HB_*_*HB_ 3 variables bash formatting sed

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

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

纯粹用bash做它会很好,但是像sed一样调用其他东西也会很好.

anu*_*ava 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
Run Code Online (Sandbox Code Playgroud)

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

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

  • 关于`printf`如何工作的解释可能对OP有帮助 (3认同)