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

如何用awk将file1指定列更新到file2并保留file1独有的记录

awk实现CSV文件字段更新并追加独有记录解决方案

你需要补充读取完file2后的遍历逻辑,输出file1中未匹配到的记录,修改后的脚本如下:

awk 'BEGIN{OFS=","; FPAT = "([^,]*)|(\"[^\"]+\")"}
NR==FNR {
    a3[$1] = $3
    a4[$1] = $4
    row[$1] = $0
    next
}
{
    if ($1 in a3) {
        $3 = a3[$1]
        $4 = a4[$1]
    }
    print
    seen[$1] = 1
}
END {
    for (g in row) {
        if (g != "guid" && !(g in seen)) {
            print row[g]
        }
    }
}' file1.csv file2.csv

核心修改点

  • 读取file1时新增row[$1]数组存储每行完整内容,用于后续输出独有记录
  • 处理file2时新增seen[$1]数组标记已输出的guid,避免重复
  • 新增END块遍历file1的所有guid,跳过表头和已输出的记录,打印file1独有的行
    如果你的需求需要过滤部分file1的独有记录(比如示例期望输出中省略了后两条),可以在END块的判断条件中添加自定义过滤规则即可。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.10.14 07:06:00