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