Я пытаюсь эффективно проанализировать вывод vmstat, предпочтительно в awk или sed, он также должен работать как на linux, так и на hp-ux. Например, я хотел бы вырезать процессор 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
Знаете ли вы лучший способ разобрать упомянутые выходные данные, чтобы получить числовые значения нужного имени столбца?