Среднее значение столбца на основе непоследовательных строк

Среднее значение столбца на основе непоследовательных строк

У меня есть несколько таких файлов:

38
CVBR1 14.8804 -24.6979
CVBV1 16.1739 -22.9142
CVBV2 16.1376 -22.8745
CVBV4 16.0818 -22.8148
CVBV5 16.0028 -22.7777
CVBV6 16.1640 -22.7128
CVFG1 14.8981 -24.4886
CVFG2 15.0135 -24.4262
CVFG3 15.0450 -24.3434
CVFG4 14.8876 -24.2931
CVFG5 14.8898 -24.4072
CVMA1 15.2288 -23.2110
CVMA2 15.1347 -23.1612
CVMA3 15.1441 -23.1216
CVMA4 15.2699 -23.1733
CVSA1 17.1328 -25.0427
CVSA2 17.2023 -25.0928
CVSA3 17.1647 -25.0973
CVSA4 17.1062 -25.2434
CVSA5 17.0208 -25.1670
CVSA6 16.9569 -25.3100
CVSL1 16.6008 -22.8977
CVSL2 16.7091 -22.9402
CVSL3 16.7633 -22.8944
CVSL4 16.7578 -22.9826
CVSN1 16.6497 -24.3205
CVSN2 16.6219 -24.3465
CVSN3 16.6199 -24.2929
CVSN4 16.6135 -24.1318
CVST1 15.0150 -23.5251
CVST2 15.0525 -23.6041
CVST3 15.0983 -23.6659
CVST4 15.2299 -23.7426
CVST5 15.1186 -23.5200
CVSV1 16.8864 -24.9228
CVSV2 16.8748 -25.0198
CVSV3 16.8518 -25.0361
CVSV4 16.8464 -24.8741
CVMA3 CVSA6
16.9569 -25.3100
3.6722
.03092
CVMA3 CVSV3
16.8518 -25.0361
3.4578
.04678
CVSA6 CVST3
15.0983 -23.6659
2.7588
.02963

Первые 39 строк абсолютно одинаковы в каждом файле. Я хочу вычислить среднее значение 3,6722+3,4578+2,7588+(столько, сколько их)/столько, сколько их

Я сделал следующее:

for file in in_tomo_*
do
npaths=$((($nlinhas - 39) / 4))
echo $npaths
average=$(echo | awk 'BEGIN{SUM=0}{{if NR>=39 && (NR+3)%4==0} SUM+=$1}END{print SUM/'$npaths'}' $file)
echo $average
done

решение1

awk 'FNR == 1 { skip = $1 } FNR > skip && FNR%4 == 2 { sum += $1; ++n } END { print sum/n }' file

Это подбирает, сколько строк нужно пропустить, пока мы не доберемся до интересных данных из первой строки. Затем интересные данные находятся на третьей строке каждой группы из четырех строк. Эти данные добавляются sumи nувеличиваются на единицу. В конце выводится сумма, деленная на n, что дает среднее значение всех значений, которые мы подобрали.

Для данного примера это выведет 3.29627.

Связанный контент