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

如何使用Linux命令将列结构不同的两个TXT文件合并为单个目标文件

跨结构TXT文件列合并的Linux命令实现方案

前置约定

  • 两个输入文件均为带列头的纯文本表格,默认以制表符作为列分隔符,可根据实际文件格式调整分隔符参数
  • 合并逻辑为通过两文件共有的A、B列做键匹配行,未匹配到的列位置自动填充空值
  • 最终输出列顺序固定为A、B、C、D、E、F

方案1:awk原生实现(无额外依赖,全Linux发行版通用)

不依赖第三方工具,适配绝大多数纯文本表格场景,直接执行以下命令即可完成合并:

awk -F '\t' '
# 遍历第一个输入文件
NR==FNR {
    # 读取表头,记录各列的实际位置
    if (FNR == 1) {
        for (i=1; i<=NF; i++) col_idx[$i] = i
        a_col = col_idx["A"]
        b_col = col_idx["B"]
        c_col = col_idx["C"]
        f_col = col_idx["F"]
        next
    }
    # 用A、B值拼接为唯一行键,暂存对应C、F列的值
    row_key = $a_col "|" $b_col
    c_store[row_key] = $c_col
    f_store[row_key] = $f_col
    next
}
# 遍历第二个输入文件
{
    # 读取第二个文件的表头,记录各列实际位置
    if (FNR == 1) {
        for (i=1; i<=NF; i++) col_idx[$i] = i
        a_col2 = col_idx["A"]
        b_col2 = col_idx["B"]
        d_col2 = col_idx["D"]
        e_col2 = col_idx["E"]
        # 输出固定顺序的合并表头
        print "A\tB\tC\tD\tE\tF"
        next
    }
    # 匹配暂存的行键,取出对应C、F值,无匹配则置空
    row_key = $a_col2 "|" $b_col2
    c_val = c_store[row_key] ? c_store[row_key] : ""
    f_val = f_store[row_key] ? f_store[row_key] : ""
    # 按目标列顺序打印整行
    print $a_col2 "\t" $b_col2 "\t" c_val "\t" $d_col2 "\t" $e_col2 "\t" f_val
}
' file1.txt file2.txt > merged_output.txt

适配调整说明:

  • 若文件为逗号分隔,将命令开头的-F '\t'修改为-F ',',同时将打印输出中的\t替换为,即可
  • 命令自动识别表头对应的列位置,即使两个文件中列的排列顺序不一致,也能正确取值

方案2:csvkit工具实现(适配带转义的复杂表格)

如果TXT文件为带引号转义、文本内嵌分隔符的类CSV格式,可通过系统包管理器安装csvkit工具集(Debian/Ubuntu执行apt install csvkit,RHEL/CentOS执行dnf install csvkit),通过内置工具链完成高容错合并:

# 提取第一个文件的目标列,暂存
csvcut -c A,B,C,F file1.txt > tmp_file1.tmp
# 提取第二个文件的目标列
csvcut -c A,B,D,E file2.txt > tmp_file2.tmp
# 按A、B列做关联合并,指定输出列顺序
csvjoin -c A,B tmp_file1.tmp tmp_file2.tmp | csvcut -c A,B,C,D,E,F > merged_output.txt

工具特点:

  • 自动识别文本中的转义引号、内嵌分隔符,不会因表格内容干扰解析逻辑
  • 追加参数--outer可实现全外连接,保留两个文件中未互相匹配的所有行

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.10.23 05:36:04