1

我正在尝试将与 iostat 中的 nvme* hhd 匹配的行的值合计为兆字节,然后从行 x 到行 z 得到总计,在我的情况下为 2 行。

iostat -m  <-- in megabytes

iostat -m |  awk '{if($1 ~ /nvme*/ ) print $2, $3, $4}'

------------------
9.38,   0.20,  0.57

13.67,  0.01,  1.60
------------------- 
23.05, 0.21, 2.17  <<-- The total

我怎样才能做到这一点?

4

1 回答 1

4

尝试:

iostat -m |  awk '$1 ~ /nvme*/{a+=$2;b+=$3;c+=$4;print $2, $3, $4} END{print"--------------";print a,b,c}'

这个怎么运作

  • $1 ~ /nvme*/

    这将选择第一个字段与 regex 匹配的行nvme*。Myiostat不生成包含nvme. 因此,由您决定这是否真的是适合您的情况的正确正则表达式。

  • a+=$2;b+=$3;c+=$4

    a这会保留变量、b和中感兴趣的三列的运行总和c

  • print $2, $3, $4

    这将打印感兴趣的三列。

  • END{print"--------------";print a,b,c}

    读入所有行后,将打印出总数。这print"--------------"会在我的系统上生成一个漂亮的表格。如果您iostat以不同的格式生成输出,您可能需要相应地进行调整。

于 2015-02-18T20:31:55.070 回答