2011-09-08 4 views
2

awk 또는 sed에서 vmstat 출력을 효율적으로 구문 분석하려고하는데 Linux 및 HP-UX에서 모두 작동해야합니다. 예를 들어, I는 다음과 같은 출력에서 ​​(이 경우에는 "92"), CPU에게 유휴 % 잘라 싶습니다효율적인 방법으로 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를 출력 리눅스 분포 및 HP-UX 다른 다를 수 있으며, 또한 열이 변할 수 길이이며 다른 순서로 제시 될 수 있습니다.

나는 멋진 AWK의 oneliner를 작성했지만, 결국 파이썬 솔루션을 종료 :

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

당신은 더 좋은 방법 원하는 열 이름의 숫자 값을 얻기 위해 언급 출력을 구문 분석을 아십니까? 당신이 할 수있는

+0

파이썬 oneliners는 perl :-)과 비슷한 수준의 매력이 없습니다. –

답변

4

사용 AWK :

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

이 리눅스뿐 아니라 HP-UX 또는 다른 표준 유닉스 시스템에서 "ID"열의 값을 얻어야한다.

Linux, HP-UX 및 Solaris에서 테스트되었습니다.

0
$ vmstat | python -c 'import sys; print sys.stdin.readlines()[-1].split()[-2]' 
95 
관련 문제