我只需要用三行来计算所有列的平均值,比如

0.9 0.7 4.1             12.0
0.9 0.7 4.1             12.5
0.8 0.7 4.1             12.4
0.7 0.3 4.1             11.2
0.7 0.3 4.1             11.2
0.8 0.3 4.0             11.1

所以我只需要两条线,也就是说。
0.86 0.7 4.1 12.3
0.73 0.3 4.03 11.16

有人能给我一个简单的脚本吗?

最佳答案

here is an awk script for you dear.

BEGIN{
FS=" ";
N=3;
sum1=0;sum2=0;sum3=0;sum4=0;count=1;
}
{
 if(count%N != 0 )
 {
  count++;
  sum1 = sum1 + $1;
  sum2 = sum2 + $2;
  sum3 = sum3 + $3;
  sum4 = sum4 + $4;
 }
 else
 {
  sum1 = sum1 + $1;
  sum2 = sum2 + $2;
  sum3 = sum3 + $3;
  sum4 = sum4 + $4;
  printf("%f %f %f %f\n",sum1/N,sum2/N,sum3/N,sum4/N);
  sum1=0;sum2=0;sum3=0;sum4=0;count=1;
 }
}
END{
}

希望对你有帮助。运行方式:
awk -f <name of this awk script> <your input text file>

因为,如果您的文本文件包含x行输入,其中x不是n的整数,那么您的x%n行将从您的输出中丢失。上面的脚本将给出部分结果,但是文本文件中没有行的correct不是n的倍数。要处理此问题,可以在脚本的结尾部分添加以下行。
END{
count-=1;
if(count!=0)
{
printf("Last 'x'=%d lines in the text file such that x <     N\n",count);
printf("%f %f %f     %f\n",sum1/count,sum2/count,sum3/count,sum4/count);
}
}

关于linux - 用n行计算平均值,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/9430955/

10-10 07:05