awk '
FNR==1{argind++} # if you are on GNU awk, remove this and...
/Curve No./ { in_f_format=1; next }
/^[[:space:]]*$/ { in_f_format=0; next }
{sum2[argind]+=$2; sum3[argind]+=$3} # ... replace argind with ARGIND here
END{
for(i=1;i<=argind;i++) # ... and here.
printf("%.6f\n",sum3[i]/sum2[i])
}' file1 file2
Вывод:
14.034537
14.034537
Если вы используете GNU awk, вы можете заменить argind
на встроенный ARGIND
и удалить блок FNR==1
.
Обновление :
Если вы используете GNU awk, вы можете использовать ENDFILE
:
$ awk '/Curve No./ { in_f_format=1; next }
/^[[:space:]]*$/ { in_f_format=0; next }
{sum2+=$2; sum3+=$3}
ENDFILE { # ENDFILE after every file
printf("%.6f\n",sum3/sum2) # print
sum3=sum2=0 # reset vars
}' file file # all those files
14.034537
14.034537
Еще одно обновление :
Или вы можете переместить printf
и удалить блок END
:
$ awk '/Curve No./ { in_f_format=1; next }
/^[[:space:]]*$/ {
in_f_format=0
printf("%.6f\n",sum3/sum2) # move it here
sum2=sum3=0 # reset vars
next
}
{sum2+=$2; sum3+=$3}' file file
14.034537
14.034537