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

如何对72列文件中从第4列开始的隔列求和?AWK代码求助

解决AWK按列求和的问题

我来帮你搞定这个问题!你的AWK代码没达到预期效果,主要是两个关键问题:

  • 你用了sum[i]数组来累加,这会把所有行的同一列值加在一起,但你需要的是每行单独计算求和;
  • 最后直接print输出了整行,没有按照你想要的格式输出前几列加总和的结果。

正确的AWK代码

按照你的预期输出格式,这段代码可以完美解决问题:

awk '{sum=0; for(i=4; i<=NF; i+=2) sum+=$i; print $1, $2, sum}' infile

代码解释

让我拆解一下这段代码的逻辑:

  • sum=0:每处理一行前,先把求和变量重置为0,确保每行的计算都是独立的,不会和上一行的结果混在一起;
  • for(i=4; i<=NF; i+=2):从第4列开始,每次步长为2循环,也就是选取第4、6、8……直到最后一列的所有目标列;
  • sum+=$i:把当前循环到的列的值累加到sum变量中;
  • print $1, $2, sum:按照你想要的格式,输出第一列(日期)、第二列,以及计算得到的总和。

验证你的输入

用你提供的测试输入来验证:

  • 第一行输入:20170101 1 1 1.5 2 2 3 3 → 求和:1.5+2+3=6.5 → 输出:20170101 1 6.5
  • 第二行输入:20170101 2 1 2 2 4 3 4 → 求和:2+4+4=10 → 输出:20170101 2 10
  • 第三行输入:20170101 3 1 5 2 3 3 6 → 求和:5+3+6=14 → 输出:20170101 3 14

完全匹配你的预期输出哦!

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.05.21 07:57:56