解析oswiostat

解析oswiostat

我正在寻找一种方法来解析 iostat 文件并获取时间和 iowait。我的文件如下所示:

Linux OSWbb v7.3.3
zzz ***Wed Jul 20 19:00:08 EDT 2016
avg-cpu:  %user   %nice %system %iowait  %steal   %idle
          49.62    0.00    2.92   13.71    0.00   33.76

Device:         rrqm/s   wrqm/s     r/s     w/s    rkB/s    wkB/s avgrq-sz avgqu-sz   await  svctm  %util
                sda               0.00    15.00    2.00    8.00     8.00    92.00    20.00     0.02    2.40   1.40   1.40
                dm-0              0.00     0.00    0.00    0.00     0.00     0.00     0.00     


zzz ***Thu Jul 20 19:01:09 EDT 2016
avg-cpu:  %user   %nice %system %iowait  %steal   %idle
          10.33    0.00    7.81   20.26    0.00   61.59

Device:         rrqm/s   wrqm/s     r/s     w/s    rkB/s    wkB/s avgrq-sz avgqu-sz   await  svctm  %util
            sda               0.00     0.00    0.00    0.00     0.00     0.00     0.00     0.00    0.00   0.00   0.00
            dm-0              0.00     0.00    0.00    0.00     0.00     0.00     0.00     0.00    0.00   0.00   0.00

zzz ***Thu Jul 20 19:02:09 EDT 2016
avg-cpu:  %user   %nice %system %iowait  %steal   %idle
          10.33    0.00    7.81   20.26    0.00   61.59

Device:         rrqm/s   wrqm/s     r/s     w/s    rkB/s    wkB/s avgrq-sz avgqu-sz   await  svctm  %util
            sda               0.00     0.00    0.00    0.00     0.00     0.00     0.00     0.00    0.00   0.00   0.00
            dm-0              0.00     0.00    0.00    0.00     0.00     0.00     0.00     0.00    0.00   0.00   0.00

我希望从第一行(zzz)获取时间并在多个文件中返回 %iowait 。任何建议,将不胜感激。谢谢

答案1

你可以使用awk.选择一种模式来选择所需的行,然后提取字段。例如

awk '
/:[0-9][0-9]:/ { time=$5 }
/%iowait/ { getline; iowait=$4; print time, iowait }
'

这与 的行匹配:<two digits>:并保留字段 5。当它与 匹配的行时%iowait,它会读取下一行,并保留字段 4。

相关内容