小编Sha*_*ker的帖子

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}'
Run Code Online (Sandbox Code Playgroud)

电流输出

cal =40.9297
Run Code Online (Sandbox Code Playgroud)

所需的输出
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 '{ …
Run Code Online (Sandbox Code Playgroud)

awk

3
推荐指数
1
解决办法
6677
查看次数

脚本中GB转TB

应该是这样的0.972 / 3=0.324是这里的实际值。因此,如果 的值HDD UsedG 中,则应以 TB 为单位进行计算,然后进行除法。

# isi storagepool list -v |
awk '
    /Requested Protection:/ { parity=substr($NF,length($NF)-1,1) }
    /Nodes:/ { nodes=$NF }
    /HDD Total/ { hdd_total=$NF }
    /HDD Used/ { hdd_used=$NF }
    END {
        multiplier=nodes-parity
        total=hdd_total/nodes*multiplier
        used=hdd_used/nodes
        print "parity =" parity
        print "NodeNumber =" nodes
        print "Total =" total "TB"
        print "Effective Total volume = " total*0.8 " TB"
        print "USED =" used "%"
        print "Effective used=" used*multiplier*0.8 " …
Run Code Online (Sandbox Code Playgroud)

scripting awk

2
推荐指数
1
解决办法
950
查看次数

标签 统计

awk ×2

scripting ×1