linux shell

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

2022-03-29  本文已影响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
上一篇 下一篇

猜你喜欢

热点阅读