2013-11-26 105 views
2

我需要grep只在使用iostat生成的日誌文件中的某些行。 iostat命令是iostat -x 1 -m> disk.log並保存一個文件是這樣的:解析iostat輸出

Linux 2.6.32-358.18.1.el6.x86_64 (parekosam) 11/26/2013  _x86_64_  (2 CPU) 

avg-cpu: %user %nice %system %iowait %steal %idle 
      0.04 0.01 0.14 0.28 0.00 99.53 

Device:   rrqm/s wrqm/s  r/s  w/s rMB/s wMB/s avgrq-sz avgqu-sz await svctm %util 
sda    72.44  6.67 4.15 0.34  0.33  0.03 162.23  0.02 3.92 1.77 0.80 
dm-0    0.00  0.00 1.30 6.96  0.03  0.03 15.11  0.65 78.37 0.69 0.57 
dm-1    0.00  0.00 0.07 0.00  0.00  0.00  7.99  0.00 2.57 0.67 0.00 

avg-cpu: %user %nice %system %iowait %steal %idle 
      0.00 0.00 0.00 1.01 0.00 98.99 

Device:   rrqm/s wrqm/s  r/s  w/s rMB/s wMB/s avgrq-sz avgqu-sz await svctm %util 
sda    0.00  5.00 0.00 3.00  0.00  0.03 18.67  0.03 10.67 10.67 3.20 
dm-0    0.00  0.00 0.00 7.00  0.00  0.03  8.00  0.04 5.29 4.57 3.20 
dm-1    0.00  0.00 0.00 0.00  0.00  0.00  0.00  0.00 0.00 0.00 0.00 

我想只顯示人民幣/ s和WMB/S列,這樣我可以計算平均速度。我試過sedawk,但收效甚微。理想的輸出應該是這樣的:

12.27 10.23 
11.27 10.22 
15.26 20.23 
12.24 10.25 
12.26 50.23 
12.23 10.26 
13.23 23.23 
12.22 10.23 
12.23 10.23 
22.23 14.27 
13.21 10.23 
12.23 10.23 
14.22 10.23 
12.23 10.21 
+0

12.27從哪裏來? – fedorqui

+0

這些是表示讀取和寫入兆字節/秒的示例值,我想在分析輸出後將其存入日誌文件。 – ivica

+0

但是,基於當前輸入的輸出是什麼? – fedorqui

回答

2

請注意,這僅限於'sda'。

iostat -x 1 -m | awk '/sda/ { print $6, $7}' 
+0

這麼簡單......我真的應該學習文本處理的基礎知識。謝謝。 – ivica

+0

是的。他們擅長任何* nix工具箱! – jgr

1

這是做你想做的嗎?

/^$/ {a=""} 
a {print $6,$7} 
/^Device/ {a=1}