unix:根据列值合并文件

我有两个文件,看起来像这样:

文件1(2列):

ID1 123 ID2 234 ID3 232 ID4 344 ... 

文件2(> 100万列)

 ID2 AC ... ID3 GT ... ID1 CT ... ID4 AC ... ... 

我想添加从文件1列2的值基于ID作为第二列的文件2。 所以合并的文件应该是这样的:

 ID2 234 AC ... ID3 232 GT ... ID1 123 CT ... ID4 344 AC ... ... 

与文件2(行的顺序)完全相同,但添加了第二列。 这些ID是第一列的值(存在于两个文件中)。 文件1具有比文件2多的行/ ID。来自文件2的所有ID都在文件1中,但不是来自文件1的所有ID都在文件2中。

有谁知道如何在unix / bash下做到这一点? 非常感谢!

 $ join <(sort file1) <(sort file2) ID1 123 CT ... ID2 234 AC ... ID3 232 GT ... ID4 344 AC ... 

如果你想保持file2的顺序

 $ join -1 1 -2 2 <(sort file1) <(cat -n file2 | sort -k2,2) | sort -k3,3n | cut -d' ' -f1-2,4- ID2 234 AC ... ID3 232 GT ... ID1 123 CT ... ID4 344 AC ...