【问题标题】: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 进行输入和输出。