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

AWK合并两个CSV文件:匹配记录填充日期的问题求助

解决CSV文件按主键匹配合并并填充日期/NA的问题

你的AWK脚本核心问题是仅将File2的主键存入数组,没有保存对应的日期值,导致匹配时无法输出目标日期,只能输出空逗号。以下是修正后的解决方案:

修正后的AWK脚本

awk -F "," -v OFS="," '
# 读取File2.csv,建立主键与日期的映射
ARGV[1] == FILENAME {
    date_map[$1] = $3
    next
}
# 处理File1.csv,根据映射填充第四列
{
    print $0, ($1 in date_map ? date_map[$1] : "NA")
}
' File2.csv File1.csv > Merge.csv

脚本说明

  1. 建立映射关系:处理第一个输入文件File2.csv时,用主键$1作为数组date_map的键,将第三列的日期值$3存入数组,后续可通过主键直接获取对应日期。
  2. 处理目标文件:遍历File1.csv的每一行,通过三元运算符判断当前行主键是否存在于映射数组中:
    • 存在则输出原行内容+对应日期
    • 不存在则输出原行内容+NA
  3. 统一分隔符:通过-v OFS=","设置输出字段分隔符为逗号,避免手动拼接逗号可能出现的格式问题。

运行结果

执行脚本后生成的Merge.csv内容将完全符合预期:

mac-test-2,10.57.8.2,Compliant,NA
mac-test-6,10.57.8.6,Compliant,NA
mac-test-12,10.57.8.12,Compliant,NA
mac-test-17,10.57.8.17,Noncompliant,2022-10-21

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.17 03:40:38