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

如何使用awk按行对多组数据第三列求和并输出指定格式结果

问题原因

你现有的awk命令存在两个核心问题:

  • 没有跳过>开头的分组分隔行,会将分隔行也参与计算
  • 逻辑为逐行对当前行所有字段求和输出,没有按对应行号累加两组数据的第三列,也未保留第一列的索引值输出
可行解决方案

使用如下awk命令即可得到预期结果:

/^>/ { line = 0; next }  # 匹配到分组分隔行就重置行计数、跳过不处理
{
    line++
    col1[line] = $1       # 存储当前行第一列的索引值
    sum[line] += $3       # 按行号累加第三列数值
}
END {
    # 遍历输出结果,数值格式和预期对齐
    for(i=1; i<=line; i++) {
        printf "%.3f   %.1f\n", col1[i], sum[i]
    }
}

运行方式

你可以直接用单行命令执行:

awk '/^>/{line=0;next}{line++;col1[line]=$1;sum[line]+=$3}END{for(i=1;i<=line;i++)printf "%.3f   %.1f\n",col1[i],sum[i]}' input_file > out_file

该方案不限制每组数据的行数,只要每组数据用>开头的行分隔,都可以正常按对应行累加第三列数值。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.10.11 12:18:02