美文网首页linux shell
awk 按照指定行名顺序提取数据

awk 按照指定行名顺序提取数据

作者: 吃吃吃_就知道吃 | 来源:发表于2022-03-29 10:27 被阅读0次

    说明

    需要f1:第一列为需要提取的行名,tab分割;


    image.png

    f2:第一列为行名


    image.png

    默认输出第一行

    脚本

    awk 'BEGIN{FS=OFS="\t"}NR==FNR{a[NR]=$1}NR>FNR&&FNR==1{print $0}NR>FNR{b[NR,$1]=$0}END{for(i=1;i<length(a)+1;i++){for(j=1;j<NR+1;j++){if(b[j,a[i]] != ""){print b[j,a[i]]}}}}' pheno.file  matrix.02
    ####转换:
    awk '
    BEGIN{
     FS=OFS="\t"
    }NR==FNR{
     a[NR]=$1
    }NR>FNR&&FNR==1{
     print $0
    }NR>FNR{
     b[NR,$1]=$0
     }END{
     for(i=1;i<length(a)+1;i++){
      for(j=1;j<NR+1;j++){
       if(b[j,a[i]] != ""){
        print b[j,a[i]]
       }
      }
     }
    }' pheno.file  matrix.02
    

    结果

    image.png

    相关文章

      网友评论

        本文标题:awk 按照指定行名顺序提取数据

        本文链接:https://www.haomeiwen.com/subject/gdsvjrtx.html