美文网首页
awk 按照列名和顺序提取指定列数据

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

作者: 吃吃吃_就知道吃 | 来源:发表于2022-03-24 23:08 被阅读0次

说明

需要两个文件,f1为需要提取的列名,自上而下为提取顺序;f2为待提取的矩阵,第一列默认输出。

f1示例

image.png

f2示例

image.png

脚本

awk 'BEGIN{FS=OFS="\t"}NR==FNR{a[NR]=$1}NR>FNR&&FNR==1{for(i=1;i<length(a)+1;i++){for(j=1;j<NF+1;j++){if(a[i]==$j){b[j]=$j}}}}NR>FNR{printf $1;for(i=1;i<length(a)+1;i++){for(j=1;j<NF+1;j++){if(a[i]==b[j]){printf "\t"$j}}}print ""}'  pheno.file  matrix.02

awk '
BEGIN{
  FS=OFS="\t"
}NR==FNR{
  a[NR]=$1
}NR>FNR&&FNR==1{
  for(i=1;i<length(a)+1;i++){
    for(j=1;j<NF+1;j++){
      if(a[i]==$j){
        b[j]=$j
       }
    }
  }
}NR>FNR{
  printf $1
  for(i=1;i<length(a)+1;i++){
    for(j=1;j<NF+1;j++){
      if(a[i]==b[j]){
        printf "\t"$j
      }
    }
  }
  print ""
}' pheno.file  matrix.02

结果

image.png

相关文章

网友评论

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

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