如何将同一行的块更改为给定值[关闭]

问题描述 投票:0回答:0

我想从 iostat 输出生成聊天记录。 如果磁盘永久连接到机器,那么我没有任何问题。 但是一些磁盘动态出现然后我有问题。 例如,当我通过磁盘 grep 输出时:

lukas$ grep -e vde iostat.txtcopy 
vde             12.00     12.00     0.00   0.00  523.42  1024.00
vde             35.00     32.00     1.00   2.78  189.69   936.23
vde             77.00     52.00     3.00   3.75  137.21   691.53
vde             33.00     32.00     2.00   5.71  271.79   992.97
vde             36.00     28.00     0.00   0.00  134.06   796.44
vde             24.00     24.00     0.00   0.00  347.29  1024.00

但是我还需要有关该磁盘未连接时的信息,所以我另外 grep 设备:

lukas$ grep -e vde -e Device iostat.txtcopy 
Device            r/s     rMB/s   rrqm/s  %rrqm r_await rareq-sz
Device            r/s     rMB/s   rrqm/s  %rrqm r_await rareq-sz
Device            r/s     rMB/s   rrqm/s  %rrqm r_await rareq-sz
Device            r/s     rMB/s   rrqm/s  %rrqm r_await rareq-sz
Device            r/s     rMB/s   rrqm/s  %rrqm r_await rareq-sz
Device            r/s     rMB/s   rrqm/s  %rrqm r_await rareq-sz
vde             12.00     12.00     0.00   0.00  523.42  1024.00
Device            r/s     rMB/s   rrqm/s  %rrqm r_await rareq-sz
vde             35.00     32.00     1.00   2.78  189.69   936.23
Device            r/s     rMB/s   rrqm/s  %rrqm r_await rareq-sz
vde             77.00     52.00     3.00   3.75  137.21   691.53
Device            r/s     rMB/s   rrqm/s  %rrqm r_await rareq-sz
vde             33.00     32.00     2.00   5.71  271.79   992.97
Device            r/s     rMB/s   rrqm/s  %rrqm r_await rareq-sz
vde             36.00     28.00     0.00   0.00  134.06   796.44
Device            r/s     rMB/s   rrqm/s  %rrqm r_await rareq-sz
vde             24.00     24.00     0.00   0.00  347.29  1024.00

但这给了我很多信息。 我想得到这样的输出:

Device            r/s     rMB/s   rrqm/s  %rrqm r_await rareq-sz
Device            r/s     rMB/s   rrqm/s  %rrqm r_await rareq-sz
Device            r/s     rMB/s   rrqm/s  %rrqm r_await rareq-sz
Device            r/s     rMB/s   rrqm/s  %rrqm r_await rareq-sz
Device            r/s     rMB/s   rrqm/s  %rrqm r_await rareq-sz
vde             12.00     12.00     0.00   0.00  523.42  1024.00
vde             35.00     32.00     1.00   2.78  189.69   936.23
vde             77.00     52.00     3.00   3.75  137.21   691.53
vde             33.00     32.00     2.00   5.71  271.79   992.97
vde             36.00     28.00     0.00   0.00  134.06   796.44
vde             24.00     24.00     0.00   0.00  347.29  1024.00`

然后我可以轻松地 sed 它,并将所有带有 Device 的行更改为 0 值:

lukas$ grep -e vde -e Device iostat.txtcopy | sed '/Device/c\vde             0.00     0.00     0.00   0.00  0.0  0.00    0.00'
vde             0.00     0.00     0.00   0.00  0.0  0.00    0.00
vde             0.00     0.00     0.00   0.00  0.0  0.00    0.00
vde             0.00     0.00     0.00   0.00  0.0  0.00    0.00
vde             0.00     0.00     0.00   0.00  0.0  0.00    0.00
vde             0.00     0.00     0.00   0.00  0.0  0.00    0.00
vde             0.00     0.00     0.00   0.00  0.0  0.00    0.00
vde             12.00     12.00     0.00   0.00  523.42  1024.00
vde             0.00     0.00     0.00   0.00  0.0  0.00    0.00
vde             35.00     32.00     1.00   2.78  189.69   936.23
vde             0.00     0.00     0.00   0.00  0.0  0.00    0.00
vde             77.00     52.00     3.00   3.75  137.21   691.53
vde             0.00     0.00     0.00   0.00  0.0  0.00    0.00
vde             33.00     32.00     2.00   5.71  271.79   992.97
vde             0.00     0.00     0.00   0.00  0.0  0.00    0.00
vde             36.00     28.00     0.00   0.00  134.06   796.44
vde             0.00     0.00     0.00   0.00  0.0  0.00    0.00
vde             24.00     24.00     0.00   0.00  347.29  1024.00

我应该怎么做才能得到那个结果?

如果前一行包含值,我会尝试更改第二行,但它会更改第二、第四、第六...值

lukas$ grep -e vde -e Device iostat.txtcopy | sed '/Device/{n;s/^[[:blank:]]*Device/vde             0.00     0.00     0.00   0.00  0.0  0.00    0.00/}'
Device            r/s     rMB/s   rrqm/s  %rrqm r_await rareq-sz
vde             0.00     0.00     0.00   0.00  0.0  0.00    0.00            r/s     rMB/s   rrqm/s  %rrqm r_await rareq-sz
Device            r/s     rMB/s   rrqm/s  %rrqm r_await rareq-sz
vde             0.00     0.00     0.00   0.00  0.0  0.00    0.00            r/s     rMB/s   rrqm/s  %rrqm r_await rareq-sz
Device            r/s     rMB/s   rrqm/s  %rrqm r_await rareq-sz
vde             0.00     0.00     0.00   0.00  0.0  0.00    0.00            r/s     rMB/s   rrqm/s  %rrqm r_await rareq-sz
vde             12.00     12.00     0.00   0.00  523.42  1024.00
Device            r/s     rMB/s   rrqm/s  %rrqm r_await rareq-sz
vde             35.00     32.00     1.00   2.78  189.69   936.23
Device            r/s     rMB/s   rrqm/s  %rrqm r_await rareq-sz
vde             77.00     52.00     3.00   3.75  137.21   691.53
Device            r/s     rMB/s   rrqm/s  %rrqm r_await rareq-sz
vde             33.00     32.00     2.00   5.71  271.79   992.97
Device            r/s     rMB/s   rrqm/s  %rrqm r_await rareq-sz
vde             36.00     28.00     0.00   0.00  134.06   796.44
Device            r/s     rMB/s   rrqm/s  %rrqm r_await rareq-sz
vde             24.00     24.00     0.00   0.00  347.29  1024.00
bash sorting sed grep
© www.soinside.com 2019 - 2024. All rights reserved.