如何在 awk 中打印前导零(填充)?

如何在 awk 中打印前导零(填充)?

99.11111我正在尝试按099.11中的方式打印AWK

我尝试了以下变体但没有成功。

$ awk '{printf ("%000.2f\n", $1);}' <<< 99.111111
99.11
$ awk '{printf ("%3.2f\n", $1);}' <<< 99.111111
99.11
$ awk '{printf ("%03.2f\n", $1);}' <<< 99.111111
99.11

答案1

使用任何 awk:

$ awk '{printf("%06.2f\n", $1)}' <<< 99.111111
099.11

填充长度考虑了整个格式化数字,因此,由于小数部分占用 3 个字符(.以及2精度数字),如果您希望将整数部分填充到长度 3,则需要将填充长度设置为 6。填充还考虑了符号(如果有的话),-1例如将被格式化为-01.00¹


¹ 或可能-01,00-01٫00取决于用户的区域设置和awk实现²。对于 GNU 来说awk,它还取决于POSIXLY_CORRECT环境中是否有变量。

相关内容