Это может выглядеть как дубликат, но я не могу решить проблему, с которой я сталкиваюсь.
Я пытаюсь найти среднее значение каждого столбца из файла CSV / TSV, данные которого выглядят следующим образом:
input.tsv
ID source random text val1 val2 val3 val4 val330
1 atttt eeeee test 0.9 0.5 0.2 0.54 0.89
2 afdg adfgrg tf 0.6 0.23 0.5 0.4 0.29
output.tsv
ID source random text Avg
1 atttt eeeee test 0.606
2 afdg adfgrg tf 0.404
или, по крайней мере,
ID Avg
1 0.606
2 0.404
Я попробовал предложение от здесь
awk 'NR==1{next}
{printf("%s\t", $1
printf("%.2f\n", ($5 + $6 + $7)/3}' input.tsv
, который выдал ошибку.
и
awk '{ s = 4; for (i = 5; i <= NF; i++) s += $i; print $1, (NF > 1) ? s / (NF - 1) : 0; }' input.tsv
приведенный ниже код также выдал синтаксическую ошибку
for i in `cat input.tsv` do; VALUES=`echo $i | tr '\t' '\t'`;COUNT=0;SUM=0;typeset -i j;IFS=' ';for j in $VALUES; do;SUM=`expr $SUM + $j`;COUNT=`expr $COUNT + 1`;done;AVG=`expr $SUM / $COUNT`;echo $AVG;done
помогите решить проблему, чтобы вычислить среднее значение по строке