我只需要用三行来计算所有列的平均值,比如
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/