我想使用top
将RAM占用量作为总RAM的百分比吐出。我到目前为止的脚本是
top -l 1 |
awk '/PhysMem/ {
print "RAM\nwired:" $2/40.95 "% active:" $4/40.95 "% inactive:" $6/40.95 "% free:" $10/40.95 "%"
}'
我有4GB RAM,因此除以40.95,所以这个脚本吐出一些看起来像的东西:
RAM
wired:16.1172% active:46.2759% inactive:8.79121% free:28.8156%
我只希望它显示超过小数的1位的百分比,我不知道该怎么做。我查看了使用bc
,但我总是得到一个非法语句错误。任何想法如何将其四舍五入到awk中的第一个小数位?
答案 0 :(得分:5)
使用awk有几种方法可以做到这一点:
... | awk '{ print $2/40.95 }' OFMT="%3.1f"
... | awk '{ printf( "%3.1f\n", $2/40.95 )}'
每个都使用输出格式%3.1f
来处理舍入。因此,您需要做的就是将参数OFMT="%3.1f"
添加到您的awk调用中。 (或者您可能更喜欢格式%0.1f
3只提供最小宽度;典型的格式字符串规则适用。)