AWK: как повторно использовать результат NR-раз, не удаляя END? - PullRequest
0 голосов
/ 22 апреля 2010

Как я могу получить все различия, а не только одну? Я хочу использовать вычисленный результат для каждого элемента в третьем столбце. Дилемма заключается в том, что если я удаляю END, я могу напечатать $3, но не могу иметь ave. Если я уйду END, у меня будет ave, но не все различия.

awk '{sum+=$3} END {ave=sum/NR} END {print $3-ave}' coriolis_data
-0.00964   // I want to see the rest differences, how?

coriolis_data

.105    0.005   0.9766  0.0001  0.595   0.005
.095    0.005   0.9963  0.0001  0.595   0.005
.115    0.005   0.9687  0.0001  0.595   0.005
.105    0.005   0.9693  0.0001  0.595   0.005
.095    0.005   0.9798  0.0001  0.595   0.005
.105    0.005   0.9798  0.0001  0.595   0.005
.095    0.005   0.9711  0.0001  0.595   0.005
.110    0.005   0.9640  0.0001  0.595   0.005
.105    0.005   0.9704  0.0001  0.595   0.005
.090    0.005   0.9644  0.0001  0.595   0.005

1 Ответ

3 голосов
/ 22 апреля 2010

, затем вы создаете другой массив для хранения $3 значений. И использовать только 1 END блок

awk '{sum+=$3;s3[NR]=$3} END {ave=sum/NR; for(i=1;i<=NR;i++)print s3[i]-ave}' coriolis_data
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...