使用 AWK 如何计算匹配的总行数?
Using AWK how can I total lines that match?
我正在尝试从 iostat 中计算出与 nvme* hhd 匹配的行的总值(以兆字节为单位),然后 awking 计算从第 x 行到第 z 行的总数,在我的例子中是 2 行。
iostat -m <-- in megabytes
iostat -m | awk '{if( ~ /nvme*/ ) print , , }'
------------------
9.38, 0.20, 0.57
13.67, 0.01, 1.60
-------------------
23.05, 0.21, 2.17 <<-- The total
我怎样才能做到这一点?
尝试:
iostat -m | awk ' ~ /nvme*/{a+=;b+=;c+=;print , , } END{print"--------------";print a,b,c}'
工作原理
~ /nvme*/
这将选择第一个字段与正则表达式匹配的行 nvme*
。我的 iostat
没有生成包含 nvme
的行。因此,由您决定这是否真的是适合您的情况的正则表达式。
a+=;b+=;c+=
这保留了变量 a
、b
和 c
.
[=48 中感兴趣的三列的总和 运行 =]
print , ,
这将打印感兴趣的三列。
END{print"--------------";print a,b,c}
读入所有行后,打印出总数。 print"--------------"
在我的系统上生成了一个漂亮的 table。如果您的 iostat
以不同的格式生成输出,您可能需要相应地进行调整。
我正在尝试从 iostat 中计算出与 nvme* hhd 匹配的行的总值(以兆字节为单位),然后 awking 计算从第 x 行到第 z 行的总数,在我的例子中是 2 行。
iostat -m <-- in megabytes
iostat -m | awk '{if( ~ /nvme*/ ) print , , }'
------------------
9.38, 0.20, 0.57
13.67, 0.01, 1.60
-------------------
23.05, 0.21, 2.17 <<-- The total
我怎样才能做到这一点?
尝试:
iostat -m | awk ' ~ /nvme*/{a+=;b+=;c+=;print , , } END{print"--------------";print a,b,c}'
工作原理
~ /nvme*/
这将选择第一个字段与正则表达式匹配的行
nvme*
。我的iostat
没有生成包含nvme
的行。因此,由您决定这是否真的是适合您的情况的正则表达式。a+=;b+=;c+=
这保留了变量
[=48 中感兴趣的三列的总和 运行 =]a
、b
和c
.print , ,
这将打印感兴趣的三列。
END{print"--------------";print a,b,c}
读入所有行后,打印出总数。
print"--------------"
在我的系统上生成了一个漂亮的 table。如果您的iostat
以不同的格式生成输出,您可能需要相应地进行调整。