解析vmstat输出的有效方法

时间:2011-09-08 10:36:36

标签: parsing procps

我正在尝试有效地解析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

您是否知道更好的方法来解析所提到的输出,以获取所需列名的数值?

2 个答案:

答案 0 :(得分:4)

使用awk你可以做到:

vmstat | awk '(NR==2){for(i=1;i<=NF;i++)if($i=="id"){getline; print $i}}'

这应该在Linux以及HP-UX或任何其他标准unix系统上获得“id”列的值。

在Linux,HP-UX和Solaris上测试。

答案 1 :(得分:0)

{{1}}
相关问题