> mean; -6ren">
gpt4 book ai didi

awk - 如何摆脱 awk 致命除以零错误

转载 作者:行者123 更新时间:2023-12-02 18:14:09 26 4
gpt4 key购买 nike

每当我尝试使用 awk 计算平均值和标准差时,我都会收到“awk:致命:尝试除以零”错误。

我的命令是

awk '{s+=$3} END{print $2"\t"s/(NR)}'  >> mean;
awk '{sum+=$3;sumsq+=$3*$3} END {print $2"\t"sqrt(sumsq/NR - (sum/NR)^2)}' >>sd

有人知道如何解决这个问题吗?

最佳答案

你的问题是......你除以零。

您有两个命令:

awk '{s+=$3} END{print $2"\t"s/(NR)}'  >> mean;
awk '{sum+=$3;sumsq+=$3*$3} END {print $2"\t"sqrt(sumsq/NR - (sum/NR)^2)}' >>sd

第一个命令从标准输入读取到 EOF。然后运行第二个命令,尝试读取标准输入,但发现它是空的,因此它读取了零条记录,因此 NR 为零,并且您除以 0,并且崩溃了。

您需要在单个命令中处理平均值和标准差。

awk '{s1 += $3; s2 += $3*$3}
END { if (NR > 0){
print $2 "\t" s1 / NR;
print $2 "\t" sqrt(s2 / NR - (s1/NR)^2);
}
}'

这可以避免被零除的错误。

关于awk - 如何摆脱 awk 致命除以零错误,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/9595608/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com