【问题标题】:merging two files based on two columns基于两列合并两个文件
【发布时间】:2013-03-28 04:48:12
【问题描述】:

我有一个与之前的帖子非常相似的问题: 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

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

【问题讨论】:

    标签: linux unix join merge


    【解决方案1】:

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

    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) 中所述。

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 2015-11-07
        • 2019-05-01
        • 2013-07-01
        相关资源
        最近更新 更多