You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

如何用Awk/Bash计算太阳黑子数据各年份12个月的平均值

解决方案

你可以通过Awk的关联数组按年份分组累加数值,最后遍历数组输出各年平均值即可,具体命令如下:

awk '{
    year = $3
    sum[year] += $6
    cnt[year]++
}
END {
    # 按年份升序输出结果
    for (y=1749; y<=2005; y++) {
        # 四舍五入取整的逻辑和你举例的1749年结果81完全匹配
        avg = int(sum[y]/cnt[y] + 0.5)
        print y, avg
    }
}' sunspot.txt

代码说明

  • 逐行处理阶段
    • 取每行第三个字段$3为年份值作为关联数组的键
    • sum[year]累加对应年份的太阳黑子数值$6
    • cnt[year]统计对应年份的有效数据行数,即使存在个别年份缺数据的场景也能正常计算
  • 结束处理阶段
    • 按你要求的1749到2005的年份范围遍历,计算每一年的平均值
    • 加0.5后取整是为了实现四舍五入效果,不需要取整保留小数的话,直接把int(sum[y]/cnt[y] + 0.5)改成sum[y]/cnt[y]即可

内容的提问来源于stack exchange,提问作者ltcrawsh

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.09.27 08:54:00