Java 基于列将两个文本文件映射为一个文本文件的有效方法

Java 基于列将两个文本文件映射为一个文本文件的有效方法,java,python,linux,shell,Java,Python,Linux,Shell,我有两个文本文件: 文件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也很好,

我有两个文本文件:

文件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也很好,如果可以使用的话


任何类型的解决方案的任何潜在客户都将不胜感激。

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


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

在shell中使用
连接

join -j 2 -o 2.1 2.2 1.1 File1 File2
  • -j2
    表示“在第二列连接”
  • -o
    指定输出中列的顺序,
    2.1
    表示“文件2,列1”

您可以使用此
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