在Linux中打印多个列的总和

时间:2014-02-27 13:08:43

标签: linux perl sed awk grep

我想获得两列值的总和。我想分别得到每个结果。这是我的价值观:

命令

iostat -x 1 2 \
| perl -e 'local $/=""; @p=<STDIN>; print @p[4];' \
| awk '{ print $6 " " $7}' \
| grep -v rsec

输出

0.00 1608.00
22.00 0.00
10.00 1608.00
0.00 1312.00
0.00 0.00
0.00 0.00
0.00 296.00

我想要这个结果

32.00 4824.00

这是我试过的:

iostat -x 1 2 \
| perl -e 'local $/=""; @p=<STDIN>; print @p[4];' \
| awk '{ print $6 " " $7}' \
| grep -v rsec \
| awk '{ SUM += $1 SUM2 += $2} END { print SUM " " SUM2}'

这个命令给我一个语法错误。这是什么解决方案?

1 个答案:

答案 0 :(得分:4)

根据手册页,awk中的命令可以用换行符,分号或两者分隔。你的两个命令没有被这些东西分开。解决方案是写:

| awk '{ SUM += $1; SUM2 += $2} END { print SUM " " SUM2}'