- 论坛徽章:
- 145
|
回复 1# xiayuu119
$ awk -f get_chrSE A.txt B.txt
ID2 ID a b c d e
g1 chr1:1-20 0/4 4/6 16/16 8/10 0/24
g2 chr1:22-29 0/8 4/4 16/16 12/15 0/24
g3 chr1:25-50 4/8 6/9 24/24 24/30 0/37
g4 chr1:45-68 3/13 7/18 28/28 28/35 0/49
g5 chr2:2-20 5/10 5/11 20/20 20/25 0/31
g6 chr2:18-31 1/6 3/6 12/12 12/15 0/18
$ cat get_chrSE.awk
BEGIN{
S=SUBSEP;
split("8,15,8,8,8,8,8",f,",")
}
function P(n,s){
s="";
for(n=1;n<=7;++n){
s=s sprintf("%-"f[n]"s",d[n]);
d[n]="";
}
print s
}
function A(s1,s2,nt,dt){
split(s1,b,"/");
nt=b[1];
dt=b[2];
split(s2,b,"/");
nt+=b[1];
dt+=b[2];
return(nt"/"dt);
}
function X(g,c,s,e,n,m,t){
d[1] = g;
if(c=="ID"){
d[2] = c;
for(n=3;n<=7;++n)
d[n]=a["#"c,"site",n];
P();
next
}
d[2] = c":"s"-"e
for(n=s;n<=e;++n){
if(!a[c,n])continue;
for(m=3;m<=7;++m)
d[m] = A(d[m],a[c,n,m]);
}
P();
}
FNR==NR{
a[$1,$2]=1;
for(n=3;n<=NF;++n)
a[$1,$2,n]=$n;
next
}
{
X($2,$1,$3,$4)
}
|
|