【问题标题】:Merging of two csv files using awk based on common column基于公共列使用awk合并两个csv文件
【发布时间】:2016-01-16 22:20:27
【问题描述】:

我有一个包含 11 列的文件,第一列作为主要 id - P1 第二个 csv 包含三列,第一列作为相同的主 id - P1,但在两个文件中的级别不同, 我正在使用以下命令合并两个文件:

awk 'NR==FNR {h[$2] = $3; next} {print $1,$2,$3,$4,$5,$6,$7,$8,$9,$10,$11,h[$2]}' first.csv second.csv > final.csv

然而,在新的 csv 中只得到三列

【问题讨论】:

    标签: csv unix join awk


    【解决方案1】:

    您应该看看join 是否不是一个更简单的解决方案。为此输入man join

    join - join lines of two files on a common field
    

    【讨论】:

    • 我使用了 join -t, third.csv,但是它给出了非法字节序列错误
    【解决方案2】:

    如果 first.csv 有 11 列,而 second.csv 有 3 列,那么您的文件顺序错误。试试这样:

    awk 'NR==FNR {h[$2] = $3; next} {print $1,$2,$3,$4,$5,$6,$7,$8,$9,$10,$11,h[$2]}' second.csv first.csv > final.csv
    

    在此示例中,您也没有使用第一列作为键,而是使用第二列。

    【讨论】:

      猜你喜欢
      • 2020-08-30
      • 1970-01-01
      • 1970-01-01
      • 2023-03-12
      • 1970-01-01
      • 2015-11-07
      • 1970-01-01
      • 2014-07-12
      • 2015-12-22
      相关资源
      最近更新 更多