2011-09-08 3 views
2

Я пытаюсь эффективно анализировать вывод vmstat предпочтительно в awk или sed, он также должен работать как с linux, так и с hp-ux. Например, я хотел бы сократить ЦП простой% («92» в данном случае) из следующего выхода:эффективный способ анализа вывода vmstat

$ 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, но в конце концов закончился питон решением:

$ vmstat | python -c 'import sys; print dict(zip(*map(str.split, sys.stdin)[-2:])).get("id")' 
92 

Вы знаете лучший способ разбора упомянутого вывода, чтобы получить число значений требуемого имени столбца?

+0

python oneliners не такие запоминающиеся, как что-то в perl :-) –

ответ

4

с использованием AWK вы можете сделать:

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

Это должно получить значение столбца «ID» на Linux, а также на HP-UX или любой другой стандартной системы UNIX.

Протестировано на Linux, HP-UX и Solaris.

Смежные вопросы