我有两个已排序的文件,并希望将它们合并为第三个,但我需要对输出进行排序.第二个文件中的一列是第一个文件的子集,第二个文件与第一个文件不匹配的任何位置都应填入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