强制设定awk输出的数字位数(不使用printf)
问题在于awk会把任何可四舍五入的浮点数转换为整数:1.000 -> 1
例如:
cat <<EOF | awk -v CONVFMT=%.06f '{$1=$1*2; print}'
0.000 some stuff
1.000 other different stuff
1.234 even more stuff
EOF
得到
0 some stuff
2 other different stuff
2.468000 even more stuff
你会发现格式并不总是被应用。如何强制固定的小数位数?我不能使用printf,因为每行的字段数量和类型都不同。
解决方案
你可以直接用 sprintf 来格式化这些数字。
cat <<EOF | awk '{$1 = sprintf("%.6f", $1*2); print}'
0.000 some stuff
1.000 other different stuff
1.234 even more stuff
EOF
得到
0.000000 some stuff
2.000000 other different stuff
2.468000 even more stuff
站内所有文章版权归属LeftHeroAI导航站,无授权禁止任何主体转载、抄袭、复制内容,亦不得私自架设镜像站点。一经侵权,本站将通过法律途径追责。