2014-02-27 20 views
0

我想获得两列值的总和。我需要单独的每个结果。这里是我的价值观:在Linux中打印多个列的总和

命令

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 

在这里,我s我试过了:

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}' 

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

+5

只需在'SUM + = $ 1'和'SUM2 + = $ 2' - >'{SUM + = $ 1; SUM2 + = $ 2}'。 – fedorqui

+0

解决了我的问题,谢谢。 – AloneInTheDark

回答

4

根据手册页,awk中的命令可以用换行符,分号或两者分隔。你的两个命令不会被任何这些东西分开。解决办法是写:

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