AWK 保留一位小数

AWK 保留一位小数

我当前的脚本给出的输出带有许多小数位。有什么办法可以让输出只占 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

相关内容