在unix中通过单个列合并两个文件

时间:2012-03-05 23:56:25

标签: linux unix merge

我想在unix中将两个文件合并为一列。

我有file_a:

subjectid name age  
12 Jane 16  
24 Kristen 90  
15 Clarke 78  
23 Joann 31  

我有另一个file_b:

subjectid prob_disease  
12 0.009  
24 0.738  
15 0.392  
23 1.2E-5  

我想在命令行中合并这些文件。我想通过subjectid合并文件a和b。由于每个文件大约有200万行,我试过R但由于数据量大而冻结,有人可以帮我在linux中做这个吗? 期望的输出:

subjectid prob_disease name age  
12 0.009 Jane 16  
24 0.738 Kristen 90   
15 0.392 Clarke 78  
23 1.2E-5 Joanna 31     

请帮忙谢谢!

2 个答案:

答案 0 :(得分:14)

结帐join(1)。在您的情况下,您甚至不需要任何标志:

$ join file_b file_a
subjectid prob_disease name age
12 0.009 Jane 16
24 0.738 Kristen 90
15 0.392 Clarke 78
23 1.2E-5 Joann 31

答案 1 :(得分:2)

您正在寻找join命令:

$ cat test.1
12 Jane 16
24 Kristen 90
15 Clarke 78
23 Joann 31 
$ cat test.2
12 0.009
24 0.738
15 0.392
23 1.2E-5 
$ join -j1 -o 2.1,2.2,1.2,1.3  <(sort test.1) <(sort test.2)
12 0.009 Jane 16
15 0.392 Clarke 78
23 1.2E-5 Joann 31
24 0.738 Kristen 90
$