Linux 使用一个键将多个大表与新列中的每个输出合并,并将重复项连接到一列中

Linux 使用一个键将多个大表与新列中的每个输出合并,并将重复项连接到一列中,linux,Linux,我试图将来自多个来源(blast、pfam、kegg、uniprot等;每个都有自己的输出表)的基因注释编译成一个表。每个注释输出都是一个表,其中column1是基因ID,column2是注释。我有大约20000个基因ID,对于每个注释输出表,只有这些基因的一个子集存在 我正在寻求帮助完成以下几件事: 我希望最终的输出是一个选项卡分隔的表,列1作为基因ID,其后的每一列都是来自不同来源的注释。 i、 e.GeneID注释PFAMannotation KEGG注释 我希望最终的输出表包含所有基因,

我试图将来自多个来源(blast、pfam、kegg、uniprot等;每个都有自己的输出表)的基因注释编译成一个表。每个注释输出都是一个表,其中column1是基因ID,column2是注释。我有大约20000个基因ID,对于每个注释输出表,只有这些基因的一个子集存在

我正在寻求帮助完成以下几件事:

  • 我希望最终的输出是一个选项卡分隔的表,列1作为基因ID,其后的每一列都是来自不同来源的注释。
    i、 e.GeneID注释PFAMannotation KEGG注释

  • 我希望最终的输出表包含所有基因,注释列中有空格,没有结果

  • 对于来自同一来源的具有多个注释的基因,我希望它们被连接到相应注释来源下的一列中,不存在重复。
    输入:
    c1_g1_i1铜蛋白超家族蛋白
    c1_g1_i1类铜畴
    c1_g1_i1类铜畴
    输出:
    c1_g1_i1铜蛋白超家族蛋白;类铜蛋白结构域


  • 我尝试过一些awk数组命令,但我对它们的理解不够,无法操纵它们来完成我想要的任务,而且我还没有找到一个问题来寻找我所需要的。此外,我很难理解如何组合两个以上的表。

    请发布您尝试过的代码。以下是我尝试过的:awk'BEGIN{FS=OFS=“\t”}NR==FNR{a[$1]=2;next}{print$1,a[$1],$2}file1 file2