作为命令的输出free -m
,我得到以下内容:
total used free shared buffers cached
Mem: 2496 2260 236 0 5 438
-/+ buffers/cache: 1816 680
Swap: 1949 68 1881
我想仅获取已使用的内存(例如 2260)作为输出。我尝试了以下命令:
free -m | grep Mem | cut -f1 -d " "
帮助我提高我的指挥能力。
我怎样才能得到它的百分比,比如 35%?
答案1
awk
您无需使用单独的管道即可使用grep
:
awk '/^Mem/ {print $3}' <(free -m)
其中,记录/行将被过滤以查找以 开头的记录/行,并且打印Mem
第三个字段/列 ( ) 以显示过滤后的记录。$3
答案2
或者使用 sed:
free -m | sed -n 's/^Mem:\s\+[0-9]\+\s\+\([0-9]\+\)\s.\+/\1/p'
另一个解决方案是:
free -m | grep ^Mem | tr -s ' ' | cut -d ' ' -f 3
第二个解决方案的学分得到了这个邮政。
答案3
至于显示为百分比的附加问题(基于 jasonwryan 的回答):
awk '/^Mem/ {printf("%u%%", 100*$3/$2);}' <(free -m)
通过将第三个字段除以第二个字段来获取百分比并作为整数打印(不向上舍入!)。
编辑:添加了双“%” printf
(第一个转义了用于打印的文字字符)。
答案4
FNR =2
是输出的第二行并{print $3}
打印所使用的第三列
free -m | awk 'FNR == 2 {print $3}'