【问题标题】:Efficient way to map two text files into one based on a column基于列将两个文本文件映射为一个的有效方法
【发布时间】:2017-02-13 14:38:10
【问题描述】:

我有两个文本文件:

文件 1:

Category ID

C1  A1
C2  A2
C3  A3  
C1  A4
C4  A5

文件 2:

Purchase ID

O1  A1
O1  A2
O1  A3
O1  A4
O2  A5
O2  A6
O3  A7
O3  A2

我需要创建一个文件 3:

O1 A1 C1
O1 A2 C2

等等。

文件 1 和文件 2 将非常大。

有人可以推荐一种有效的方法来执行此操作(而不是从文件 1 和文件 2 中逐一搜索),可能是在 python 中。

但其他语言也可以。连excel都好,能用吗?

任何类型的解决方案的任何线索都将不胜感激。

【问题讨论】:

    标签: java python linux shell


    【解决方案1】:

    在外壳中使用join

    join -j 2 -o 2.1 2.2 1.1 File1 File2
    
    • -j 2 表示“加入第 2 列”
    • -o 指定输出中列的顺序,2.1 代表“文件 2,列 1”

    【讨论】:

      【解决方案2】:

      您可以使用这个awk 命令来合并这两个文件:

      awk 'FNR==NR{id[$2]=$1; next} {print $0, id[$2]}' file1 file2
      
      Purchase ID Category
      O1  A1 C1
      O1  A2 C2
      O1  A3 C3
      O1  A4 C1
      O2  A5 C4
      O2  A6
      O3  A7
      O3  A2 C2
      

      【讨论】:

        【解决方案3】:

        将2个文件导入数据库中的2个表(例如SQLite),然后从T1中选择join T2 on T1.id=T2.id。

        sqlite shell 可以设置 csv 或 tabs 模式。 (逗号/制表符分隔。)使用.import.once 进行输入和输出。

        【讨论】:

          猜你喜欢
          • 1970-01-01
          • 1970-01-01
          • 2019-04-20
          • 2018-11-23
          • 2023-03-04
          • 1970-01-01
          • 2016-03-20
          • 1970-01-01
          • 2020-05-13
          相关资源
          最近更新 更多