Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/linux/24.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/8/perl/9.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
在Linux中打印多个列的总和_Linux_Perl_Sed_Awk_Grep - Fatal编程技术网

在Linux中打印多个列的总和

在Linux中打印多个列的总和,linux,perl,sed,awk,grep,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.

我想得到两列值的和。我希望每个结果都是分开的。以下是我的价值观:

命令

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}'
iostat-x12\
|perl-e“local$/=”@p=;打印@p[4];'\
|awk“{print$6”“$7}”\
|grep-vrsec\
|awk'{SUM+=$1 SUM2+=$2}结束{print SUM“SUM2}”

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

根据手册页,awk中的命令可以用换行符、分号或两者分开。您的两个命令之间没有任何分隔。解决办法是写:

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

根据手册页,
awk
中的命令可以用换行符、分号或两者分开。您的两个命令之间没有任何分隔。解决办法是写:

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

只需添加一个
介于
SUM+=$1
SUM2+=$2
-->
{SUM+=$1;SUM2+=$2}
。这解决了我的问题,谢谢。只需添加一个
介于
SUM+=$1
SUM2+=$2
-->
{SUM+=$1;SUM2+=$2}
之间。这解决了我的问题,谢谢。