嗨,尝试使用 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[@]}"
绝对需要所有这些报价。
我是 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[@]}"
绝对需要所有这些报价。