嗨,尝试使用awk从数组值中获得均值?

时间:2015-02-02 03:53:46

标签: bash awk gawk

我是bash编程的新手。这里我试图从数组值中获得均值。

继续尝试:

${GfieldList[@]} | awk '{ sum += $1; n++ } END { if (n > 0) print "mean: " sum / n; }';

使用$ 1 Im无法获得所有值?伙计们帮我解决这个问题......

2 个答案:

答案 0 :(得分:0)

对于每个非空的输入行,这将对行上的所有内容求和并打印均值:

$ echo 21 20 22 | awk 'NF {sum=0;for (i=1;i<=NF;i++)sum+=$i; print "mean=" sum / NF; }'
mean=21

如何运作

  • NF

    这是一个条件:只有当这一行NF上的字段数量为真,意味着非零时,才会执行后面的语句。

  • sum=0

    这会将sum初始化为零。只有在有多行时才需要这样做。

  • for (i=1;i<=NF;i++)sum+=$i

    这总结了这一行的所有字段。

  • print "mean=" sum / NF

    这将打印字段的总和除以字段数。

答案 1 :(得分:0)

裸露

${GfieldList[@]} 

不会将数组打印到屏幕上。你想要这个:

printf "%s\n" "${GfieldList[@]}"

绝对需要所有这些报价。