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

说明

需要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
©著作权归作者所有,转载或内容合作请联系作者
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

推荐阅读更多精彩内容