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 будут пропущены из вашего вывода. Вышеприведенный скрипт даст частичный результат, но исправит, что ни одна из строк в текстовом файле не кратна N. Чтобы справиться с этим, вы можете добавить следующие строки в разделе END скрипта.
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);
}
}