如何基于一个匹配列合并两个具有不同字段的文件? [英] How to merge two files with different fields based on one matching columns?

查看:120
本文介绍了如何基于一个匹配列合并两个具有不同字段的文件?的处理方法,对大家解决问题具有一定的参考价值,需要的朋友们下面随着小编来一起学习吧!

问题描述

我有以下两个文件,我想根据常见ID将它们合并为一个文件:

I have two files as below and I want to merge them into one file based on common IDs:

文件1:

ARS     8.0   8.0
BBL     1.1   1.2
CCL     1.9   1.8

文件2:

ARS     2.3   2.4
ARS     2.6   2.4
ARS     2.5   2.3
BBL     1.9   1.8
EDE     1.4   1.6

所需的输出:

ARS     8.0   8.0    ARS     2.3   2.4
ARS     8.0   8.0    ARS     2.6   2.4   
ARS     8.0   8.0    ARS     2.5   2.3
BBL     1.1   1.2    BBL     1.9   1.8
CCL     1.9   1.8    NA
NA                   EDE     1.4   1.6

推荐答案

能否请您尝试一下,并告诉我这是否对您有帮助.(我保留了NA的顺序,直到最后才告诉我这是否对您有帮助) . 在这里也添加非单一衬里形式的解决方案.

Could you please try following and let me know if this helps you.(I have kept the order of NA at last only let me know if this helps you). Adding a non-one liner form of solution too here.

awk '
FNR==NR{
  a[$1]=$0;
  next
}
($1 in a){
  print a[$1],$0;
  b[$1];
  next
}
{
  print "NA\t",$0       
}
END{
  for(i in b){
    delete a[i]
};
  for(j in a){
  print a[j],"\tNA"
}
}
' file1  file2

输出如下.

ARS     8.0   8.0 ARS     2.3   2.4
ARS     8.0   8.0 ARS     2.6   2.4
ARS     8.0   8.0 ARS     2.5   2.3
BBL     1.1   1.2 BBL     1.9   1.8
NA   EDE     1.4   1.6
CCL     1.9   1.8   NA

这篇关于如何基于一个匹配列合并两个具有不同字段的文件?的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持IT屋!

查看全文
登录 关闭
扫码关注1秒登录
发送“验证码”获取 | 15天全站免登陆