【问题标题】:Parsing iostat output解析 iostat 输出
【发布时间】:2013-02-03 22:48:45
【问题描述】:

iostat 的输出是这样的:

Device:         rrqm/s   wrqm/s   r/s   w/s    rkB/s    wkB/s avgrq-sz avgqu-sz   await  svctm  %util
sda               0.00     2.40  0.01  3.92     0.16    25.28    12.95     0.05   12.81   6.58   2.58
sda1              0.00     0.00  0.00  0.00     0.00     0.00    25.86     0.00    6.57   5.38   0.00
sda2              0.00     2.40  0.01  3.92     0.16    25.28    12.95     0.05   12.81   6.58   2.58
sdb               0.00     0.00  0.00  0.00     0.00     0.00     8.00     0.00   30.37  20.16   0.00
VG00-LogVol00
               0.00     0.00  0.00  0.70     0.02     2.79     8.04     0.02   23.72   3.71   0.26
VG00-LogVol04
               0.00     0.00  0.00  4.31     0.03    17.26     8.01     0.07   16.74   4.32   1.87
VG00-LogVol03
               0.00     0.00  0.00  0.24     0.00     0.98     8.01     0.01   21.37   8.52   0.21
VG00-LogVol08
               0.00     0.00  0.00  0.00     0.00     0.00     8.00     0.00   14.03   2.31   0.00
VG00-LogVol01
               0.00     0.00  0.00  0.00     0.00     0.00     8.03     0.00  127.25   1.17   0.00
VG00-LogVol07
               0.00     0.00  0.00  0.00     0.00     0.00     8.00     0.00    2.42   1.72   0.00
VG00-LogVol06
               0.00     0.00  0.00  0.80     0.01     3.21     8.02     0.01   10.28   4.89   0.39
VG00-LogVol02
               0.00     0.00  0.01  0.26     0.10     1.04     8.52     0.01   52.88   6.01   0.16
VG00-LogVol05
               0.00     0.00  0.00  0.00     0.00     0.00     8.00     0.00    3.73   0.33   0.00

我尝试解析输出,但是当我到达“VG00-LogVol00”、“VG00-LogVol04”时,我无法解析文本。有没有办法使用 sed 删除多余的行?

谢谢

【问题讨论】:

    标签: linux parsing sed iostat


    【解决方案1】:

    如果 VG00 总是出现在分割线中,你可以这样做:

    sed '/VG00/ { N; s/\n// }'
    

    使用复制/粘贴的文本,我有以下对齐列(GNU sed 和 BSD sed):

    sed '/VG00/ { N; s/\n//; s/ \{5,\}/     /; }'
    

    输出:

    Device:         rrqm/s   wrqm/s   r/s   w/s    rkB/s    wkB/s avgrq-sz avgqu-sz   await  svctm  %util
    sda               0.00     2.40  0.01  3.92     0.16    25.28    12.95     0.05   12.81   6.58   2.58
    sda1              0.00     0.00  0.00  0.00     0.00     0.00    25.86     0.00    6.57   5.38   0.00
    sda2              0.00     2.40  0.01  3.92     0.16    25.28    12.95     0.05   12.81   6.58   2.58
    sdb               0.00     0.00  0.00  0.00     0.00     0.00     8.00     0.00   30.37  20.16   0.00
    VG00-LogVol00     0.00     0.00  0.00  0.70     0.02     2.79     8.04     0.02   23.72   3.71   0.26
    VG00-LogVol04     0.00     0.00  0.00  4.31     0.03    17.26     8.01     0.07   16.74   4.32   1.87
    VG00-LogVol03     0.00     0.00  0.00  0.24     0.00     0.98     8.01     0.01   21.37   8.52   0.21
    VG00-LogVol08     0.00     0.00  0.00  0.00     0.00     0.00     8.00     0.00   14.03   2.31   0.00
    VG00-LogVol01     0.00     0.00  0.00  0.00     0.00     0.00     8.03     0.00  127.25   1.17   0.00
    VG00-LogVol07     0.00     0.00  0.00  0.00     0.00     0.00     8.00     0.00    2.42   1.72   0.00
    VG00-LogVol06     0.00     0.00  0.00  0.80     0.01     3.21     8.02     0.01   10.28   4.89   0.39
    VG00-LogVol02     0.00     0.00  0.01  0.26     0.10     1.04     8.52     0.01   52.88   6.01   0.16
    VG00-LogVol05     0.00     0.00  0.00  0.00     0.00     0.00     8.00     0.00    3.73   0.33   0.00
    

    【讨论】:

      【解决方案2】:

      我会去

      sed -e '/^\([^[:space:]]\+\)$/{N;s/\n//;}'
      

      假设设备行没有空格。

      但我也会研究影响 iostat 并使其产生不同输出的可能性。不过,我不知道那里的选项。

      【讨论】:

      • iostat 很遗憾没有这样的输出 :(
      猜你喜欢
      • 2020-03-15
      • 2012-08-18
      • 2015-05-25
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2014-03-31
      • 1970-01-01
      • 2021-02-23
      相关资源
      最近更新 更多