bash 解析iostat输出

声明:本页面是StackOverFlow热门问题的中英对照翻译,遵循CC BY-SA 4.0协议,如果您需要使用它,必须同样遵循CC BY-SA许可,注明原文地址和作者信息,同时你必须将它归于原作者(不是我):StackOverFlow 原文地址: http://stackoverflow.com/questions/20217145/
Warning: these are provided under cc-by-sa 4.0 license. You are free to use/share it, But you must attribute it to the original authors (not me): StackOverFlow

提示:将鼠标放在中文语句上可以显示对应的英文。显示中英文
时间:2020-09-18 08:46:21  来源:igfitidea点击:

Parse iostat output

bashsedawk

提问by ivica

I have a need to grep only certain lines in a log file generated with iostat. iostatcommand is iostat -x 1 -m> disk.log and it saves a file like this:

我只需要 grep 生成的日志文件中的某些行iostatiostat命令是iostat -x 1 -m> disk.log,它保存了一个这样的文件:

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

I'd like to only show rMB/s and wMB/s columns so that I can calculate average speeds. I've tried some things with sedand awkbut with little success. Ideal output should look like this:

我只想显示 rMB/s 和 wMB/s 列,以便我可以计算平均速度。我已经尝试了一些事情sed,并awk但收效甚微。理想的输出应该是这样的:

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

采纳答案by jgr

Please notice this is for 'sda' only.

请注意,这仅适用于“sda”。

iostat -x 1 -m | awk '/sda/ { print , }'

回答by Etan Reisner

Does this do what you want?

这是你想要的吗?

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