我正在尝试将数字转换为awk中的字符串。我希望我的字符串左填充0。例如,3会变成"00000003"。我有以下测试用例:
gawk 'BEGIN { CONVFMT = "%08d" ; a = 233 ; print ""a }'
233
打印"233"不是"00000233"。用a = 233.0替换a = 233不会改变任何东西。但是,用a = 233.1替换a = 233改变了一切,我的一行代码正确地打印了填充字符串:
gawk 'BEGIN { CONVFMT = "%08d" ; a = 233.1 ; print ""a }'
00000233
我错过了什么??
此处不使用CONVFMT
。gawk手册上写着:
作为特殊情况,如果一个数字是整数,则将其转换为字符串总是一个整数,无论的值可以是。给定以下代码:
CONVFMT = "%2.2f" a = 12 b = a ""
b的值是"12",而不是"12.00"
即使使用233.0也不会打印00000233:
$ gawk 'BEGIN { CONVFMT = "%08d" ; a = 233.0 ; print ""a }'
233
你应该使用sprintf
来实现你想要的:
$ gawk 'BEGIN { a=233; name=sprintf("%08d",a); print name }'
00000233