- 论坛徽章:
- 0
|
回复 1# bioinfor
代码很丑陋,不知道符合要求不。主要分了几种情况:
NF=4,类似于STYXL1 / DUSP24 PLEKHA3
NF=3,类似于STYXL1 / DUSP24
NF=2,类似于STYXL1 DUSP24
NF=1,类似于STYXL1
name[]用来记录STYXL1->STYXL1 / DUSP24 这种关系
count[]用来记录STYXL1前面出现的次数- #!/usr/bin/gawk
- {
- if(NF==4) {
- if(count[$1]) print $1,$2,$3,name[$1];
- if(count[$2]) print $1,$2,$3,name[$3];
- if(count[$4]) print $4,name[$4];
- name[$1]=$1" / "$3;
- name[$3]=$1" / "$3;
- name[$4]=$4;
- }
- else if(NF==3){
- if(count[$1]) print $1,$2,$3,name[$1];
- if(count[$3]) print $1,$2,$3,name[$3];
- name[$1]=$1" / "$3;
- name[$3]=$1" / "$3;
- }
- else if(NF==2){
- if(count[$1]) print $1,name[$1];
- if(count[$2]) print $2,name[$2];
- name[$1]=$1;
- name[$2]=$2;
- }
- else name[$1]=$1;
- for(i=1;i<=NF;i++)
- if($i=="/") continue;
- else ++count[$i];
- }
复制代码 |
|