2013-04-05 166 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)說明。