2013-04-05 167 views
2

我有一个问题非常类似于以前的帖子: Merging two files by a single column in unix 但我想合并我的数据基于两列(订单是相同的,所以不需要排序)。 实施例,基于两列合并两个文件

subjectid subID2名年龄
12 121简16
24 241克里斯汀90
15 151克拉克78
23 231乔安31

subjectid subID2 prob_disease
12 121 0.009
24 241 0.738
15 151 0.392
23 231 1.2E-5

和输出看起来像

subjectid SubID2 prob_disease名年龄
12 121 0.009 16简
24 241 0.738 90克里斯汀
15 151 0.392 78克拉克
23 231 1.2E-5 31乔安娜

当我使用连接时,它只考虑第一列(subjectid)并重复SubID2列。 请问有没有办法通过加入或其他方式来做到这一点?谢谢

回答

2

连接命令没有选项来扫描多个字段作为加入标准。因此,你将不得不在组合中增加一些情报。假设你的文件,对各行领域的一个固定数量,你可以使用这样的事情:

join f1 f2 | awk '{print $1" "$2" "$3" "$4" "$6}' 

提供的现场计数是在你的例子给出。否则,您需要通过添加或删除一些字段来调整awk命令中的打印范围。

2

如果订单是相同的,则可以仍然由单个列合并,并指定哪些列的格式输出,如:

join -o '1.1 1.2 2.3 1.3 1.4' file_a file_b 

join(1)说明。