python – 如何快速匹配排序的两个文件的字段,但一个是另一个的子集

我有两个已排序的文件,并希望将它们合并为第三个,但我需要对输出进行排序.第二个文件中的一列是第一个文件的子集,第二个文件与第一个文件不匹配的任何位置都应填入NA.这些文件每个都很大(~20,000,000条)记录,因此将内容加载到内存中很困难,速度也是一个问题.

文件1看起来像这样:

1 a
2 b
3 c
4 d
5 e

文件2看起来像这样:

1 aa
2 bb
4 dd
5 ee

输出应该是这样的

1 a aa
2 b bb
3 c NA
4 d cc
5 e ee

最佳答案 加入是你的朋友.

join -a 1 file1 file2

应该做的伎俩.与示例输出的唯一区别在于,无法使用的行直接从file1打印,即没有NA.

编辑:这是一个也处理NA的版本:

join -a 1 -e NA -o 1.1 1.2 2.2 file1 file2
点赞