基于两列合并两个文件

时间:2013-04-05 17:05:36

标签: linux unix join merge

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

subjectid subID2名称年龄
12 121简16 24 241克里斯汀90
15 151 Clarke 78
23 231 Joann 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 Jane 16
24 241 0.738克里斯汀90
15 151 0.392 Clarke 78
23 231 1.2E-5 Joanna 31

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

2 个答案:

答案 0 :(得分:2)

join命令没有选项可以扫描多个字段作为加入条件。因此,您必须在混合中添加一些智能。假设您的文件在每一行上都有固定数量的字段,您可以使用以下内容:

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

如果您的示例中给出了字段计数。否则,您需要通过添加或删除某些字段来调整awk命令中的打印范围。

答案 1 :(得分:2)

如果订单相同,您仍然可以合并一个列并指定要输出的列的格式,例如:

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

join(1)中所述。