如何根据第一列的公共行连接两个文件?

如何根据第一列的公共行连接两个文件?
file1 :

HOUSAM1189870            3      0.00   0  -2450.00  11
HOUSAM1213135            3      0.00   0  -2620.00   2
HOCANM245675             3      0.00   0      0.00   0
HOUSAM1239242            3      0.00   0  -3113.00   8

file2 :

AY840F3001138842 20050301
AY840F3001140253 20060101
HOCANM245675     34409887        
HOUSAM1239242    34444444

我想根据文件 1 和文件 2 第一列的公共行来连接它们。因此输出应该是:

file3:

HOCANM245675             3      0.00   0      0.00   0 34409887
HOUSAM1239242            3      0.00   0  -3113.00   8 34444444

请问有什么建议吗?

答案1

join(注意:这个答案是在用命令和错误消息更新问题之前写的)

该命令称为join.

从手册页:

join - 在公共字段上连接两个文件的行

由于您的输入文件未排序,因此您需要先对它们进行排序

join <(sort file1) <(sort file2)

这些<(...)东西被称为流程替代并且受到 bash 和其他一些 shell 的支持。如果您的 shell 不支持进程替换,那么您必须使用中间文件。

join是 gnu coreutils 的一部分,因此应该安装在最常见的 gnu/linux 系统上。

相关内容