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

如何按姓名合并两个文件信息为CSV文件,缺失项补“-”?

按姓名合并两个文本文件为CSV(缺失值补“-”)

需求说明

有两个冒号分隔的文本文件:

  • 日期文件(示例命名为dates.txt):每行格式为姓名:日期
    john:01.01.2001
    mary:06.03.2016
    
  • 城市文件(示例命名为towns.txt):每行格式为姓名:城市
    john:london
    mary:new york
    

需要把它们按姓名合并成CSV文件,表头固定为name,town,date,如果某个人的城市或日期信息缺失,对应位置用-填充。

解决方案:用awk脚本处理

直接写个awk脚本就能搞定,脚本内容如下(保存为merge.awk):

BEGIN {
    FS = ":";
    OFS = ",";
    print "name,town,date";
}

# 先读日期文件,把姓名和日期存进数组
NR == FNR {
    dates[$1] = $2;
    next;
}

# 读城市文件,存姓名和城市,同时记录所有出现过的姓名
{
    towns[$1] = $2;
    all_names[$1] = 1;
}

# 把日期文件里有但城市文件里没有的姓名也加进总名单,然后输出所有结果
END {
    for (name in dates) {
        if (!(name in towns)) {
            all_names[name] = 1;
        }
    }
    for (name in all_names) {
        town = (name in towns) ? towns[name] : "-";
        date = (name in dates) ? dates[name] : "-";
        print name, town, date;
    }
}

使用方法

打开终端,执行以下命令:

awk -f merge.awk dates.txt towns.txt > merged.csv

执行后,merged.csv就是合并好的结果文件。

测试示例

情况1:信息完整时

合并后merged.csv内容:

name,town,date
john,london,01.01.2001
mary,new york,06.03.2016

情况2:存在缺失时

比如日期文件里john有日期但城市文件里没有john的城市,城市文件里mary有城市但日期文件里没有mary的日期,合并后:

name,town,date
john,-,01.01.2001
mary,new york,-

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.16 17:46:15