2011-09-08 22 views
2

私は効率的にawkやsedでvmstatの出力を解析しようとしていますが、linuxとhp-uxの両方でうまく動作するはずです。たとえば、私は、次の出力からCPUのアイドル%(この場合「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を書き込もうとしましたが、最終的にPythonのソリューションで終了:

$ 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}}' 

これは、Linux上でだけでなく、HP-UXまたは他の標準的なUNIXシステムの「ID」列の値を取得する必要があります。

Linux、HP-UX、およびSolarisでテスト済みです。

0
$ vmstat | python -c 'import sys; print sys.stdin.readlines()[-1].split()[-2]' 
95 
関連する問題