使用AWK我怎么能匹配总线?

时间:2015-02-18 20:21:30

标签: parsing awk totals iostat

我试图将从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

我怎样才能做到这一点?

1 个答案:

答案 0 :(得分:4)

尝试:

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

如何运作

  • $1 ~ /nvme*/

    这将选择第一个字段与正则表达式nvme*匹配的行。我的iostat不会生成包含nvme的行。因此,您需要确定这是否真的适合您的案例。

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

    这会保留变量abc中感兴趣的三列的运行总和。

  • print $2, $3, $4

    打印出感兴趣的三列。

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

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