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

Hi, trying to obtain the mean from the array values using awk?

我是 bash 编程新手。我在这里尝试从数组值中获取平均值。

这是我正在尝试的:

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

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

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

$ 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

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

裸体

${GfieldList[@]} 

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

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

绝对需要所有这些报价。