我当前的脚本给出的输出带有许多小数位。有什么办法可以让输出只占 1 个位置吗?
# cat sample
HDD Used: 15.0223T
HDD Total: 55.9520T
# cat sample | awk ' /HDD Total/ { hdd_total=$NF }
/HDD Used/ { hdd_used=$NF }
END {
used=hdd_total-hdd_used
print "cal =" used}'
电流输出
cal =40.9297
所需输出
cal =40.9
---> 仅保留一位小数
为此出现错误
# isi storagepool list -v| grep -i 'HDD Total:' | awk '{print "HDD Total=%.1f", $NF -1 " TB" }'
HDD Total=%.1f 54.952 TB
#cat isistorage1
7.332T n/a (R) 13.01% (T)
# cat isistorage1 | awk '{ print "Snapshot USED=", $1}'
Snapshot USED= 7.332T
答案1
您可以使用printf "cal =%.1f\n", used
它,因为它具有打印类型修饰符控制和区域。
那里.1f
的意思是,仅在浮点数后打印 1 位小数,您可以将其更改为任何您想要的小数位数字。
答案2
你可以通过设置来告诉 awk 使用哪种浮点转换CONVFMT
,默认是%.6g
,例如:
cat sample | awk -v CONVFMT='%.1f' '
/HDD Total/ { hdd_total = $NF }
/HDD Used/ { hdd_used = $NF }
END {
used=hdd_total-hdd_used
print "cal = " used
}'
输出:
cal = 40.9