我正在尝试有效地解析 vmstat 输出,最好是在 awk 或 sed 中,它也应该适用于 linux 和 hp-ux。例如,我想从以下输出中删除 cpu idle %(在本例中为“92”):
$ vmstat
procs -----------memory---------- ---swap-- -----io---- -system-- ----cpu----
r b swpd free buff cache si so bi bo in cs us sy id wa
11 0 385372 101696 61704 650716 0 1 5 9 6 12 5 2 92 0
不幸的是,vmstat 输出在不同的 Linux 发行版和 hp-ux 上可能不同,列的长度也可能不同,并且可以按其他顺序显示。
我尝试编写一些不错的 awk oneliner,但最终以 python 解决方案结束:
$ vmstat | python -c 'import sys; print dict(zip(*map(str.split, sys.stdin)[-2:])).get("id")'
92
您是否知道解析上述输出以获取所需列名的数值的更好方法?