【发布时间】:2019-03-26 14:04:41
【问题描述】:
这可能看起来像重复,但我无法解决我遇到的问题。
我正在尝试从 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
输出.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
我尝试了here的建议
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
帮我解决计算行平均值的问题
【问题讨论】:
标签: shell perl unix awk text-processing