gpt4 book ai didi

linux - 如果满足 shell 脚本中给定的条件,则计算平均值

转载 作者:太空宇宙 更新时间:2023-11-04 04:45:50 24 4
gpt4 key购买 nike

我有一个包含多种缺失值的数据集,例如 9990、9999、9999000、999999 等等。但都大于 9990。我想取每 24 个值的平均值。我正在尝试使用以下命令,但没有得到我想要的输出。

awk '{if ($1 < 9990) sum += $1; count++} NR%24==0{print count ? (sum) :9999;sum=count=0}'ifile

例如:我需要以下数据中每3行的平均值

3
3
4
9999
4
99990
13
3
999999
9999
9991
99954

我尝试过这个,但显示不同的结果:

awk '{if ($1 < 9990)sum += $1; count++} NR%3==0{print count ? (sum/count) :9999;sum=count=0}'ifile

我的愿望输出是

3.33
4 Average of 9999 4 99990 is done with 4/1. Because 9999 and 99990 are undefined values.
8 Average of 13 3 999999 is done with (13+8)/2. Because 999999 is an undefined value, so excluded from the average.
9999 All are undefined values, so denoted as 9999.

最佳答案

$1 < 9990 {
sum += $1;
count++;
}
NR % 3 == 0 {
if (count == 0) {
print "9999";
} else {
print sum / count;
}
sum = 0;
count = 0;
}

您的错误是当值“未定义”时增加count。如果你写

 {if ($1 < 9990) sum += $1; count++} 

那么 if 语句将在下一个分号处结束,而不是在右括号处结束。

关于linux - 如果满足 shell 脚本中给定的条件,则计算平均值,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/37474078/

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