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

如何使用sed/awk实现两个CSV文件按日期匹配替换及缺失值前向填充?

问题解答

结论

  • 该需求无需编写完整shell脚本,直接使用单行awk命令即可实现

实现命令

假设第一个带数值的csv文件命名为data.csv,第二个单列日期文件命名为dates.csv,执行以下命令即可得到预期输出:

awk -F ',' 'NR==FNR {row[$1]=$0; next} {if ($1 in row) {cur=row[$1]} else {cur=$1 substr(cur, index(cur, ","))} print cur}' data.csv dates.csv

命令说明

  • -F ',':指定输入字段的分隔符为逗号
  • NR==FNR {row[$1]=$0; next}:仅处理第一个输入文件data.csv,将每行的日期作为键,完整行内容存入字典row,处理完当前行直接跳到下一行,不执行后续逻辑
  • 处理第二个文件dates.csv的逻辑:
    • 若当前行的日期存在于row字典中,将缓存变量cur更新为该日期对应的完整行
    • 若当前行的日期不存在,将cur中原有的日期替换为当前行的日期,其余字段保留上一行的数值
    • 打印当前cur的内容

适用前提

  • 第二个日期文件的日期按升序排列
  • 两个文件的最早日期一致,保证第一行就能匹配到有效数据

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.09.26 20:36:08