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

如何对同ID的两个文件对应字段做差值计算并格式化输出

解决方案:批量计算文件对应ID的数值差值

需求说明

现有两个文本文件:

  • File A:每行第1列为ID(同一ID存在多条记录),第2列为日期,第3至12列为数值
  • File B:每行第1列为唯一ID,第3至12列为对应基准数值

需要将File A中每条记录的第3至12列数值,减去File B中相同ID对应的第3至12列数值,输出结果的第3至12列需以%8.2f格式呈现。

实现脚本(AWK)

使用AWK脚本可高效完成该任务,代码如下:

awk '
NR==FNR {
    # 读取File B,存储每个ID对应的基准数值
    for(i=3; i<=12; i++) {
        b_vals[$1,i] = $i
    }
    next
}
{
    # 输出File A的前两列
    printf "%s   %s", $1, $2
    # 计算并格式化输出差值
    for(i=3; i<=12; i++) {
        printf "%8.2f", $i - b_vals[$1,i]
    }
    print ""
}
' FileB FileA

脚本说明

  1. 处理File B:NR==FNR是AWK判断当前处理第一个输入文件的常用逻辑,这里将每个ID对应的第3-12列数值存入二维数组b_vals,以ID+列索引作为键
  2. 处理File A:遍历每一行时,先输出前两列(ID和日期),再循环计算第3-12列与对应基准值的差值,用%8.2f格式输出每个差值
  3. 执行方式:直接在终端执行上述命令,替换FileB和FileA为实际文件名即可;也可将代码保存为.awk脚本文件后运行

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.06.25 05:53:20