我需要获得免费交换并尝试使用grep
。
命令free -m
将其打印为:
total used free shared buff/cache available
Mem: 1823 147 1372 8 302 1485
Swap: 511 0 511
我知道如何获得总交换:
free -m | grep Swap | grep -oP "Swap:\s+\K\w+"
但无法设法获得使用和免费。有人可以帮忙吗?
答案 0 :(得分:2)
用awk。如果行开始(^
),字符串Swap:
打印第四列:
free -m | awk '/^Swap:/ {print $4}'
输出:
511
答案 1 :(得分:1)
在grep中,您可以使用Swap:\s+\w+\s+\K\w+
作为第二个,Swap:\s+\w+\s+\w+\s+\K\w+
作为第三个数字。但是有一个更好的(纯粹的bash)解决方案:
[[ "$(free -m)" =~ Swap:' '*([0-9]+)' '*([0-9]+)' '*([0-9]+) ]]
total="${BASH_REMATCH[1]}"
used="${BASH_REMATCH[2]}"
free="${BASH_REMATCH[3]}"