BEGIN {OFS=FS="\t";big=999999999999999999;}#https://www.biostars.org/p/77347/ { if ( ($3=="exon") ) { split($9,format,";"); i=0;ok=0;gn="NA"; for (i in format){ if (format[i] ~ /gene_id/){ gsub(/gene_id "/,"",format[i]); gsub(/"/,"",format[i]); if (substr(format[i],1,1)==" "){gi=substr(format[i],2);}else{gi=format[i]};ok++; } if (format[i] ~ /gene_name/){ gsub(/gene_name "/,"",format[i]); gsub(/"/,"",format[i]);gn=format[i]; } if (format[i] ~ /transcript_id/){ gsub(/transcript_id "/,"",format[i]); gsub(/"/,"",format[i]);ti=format[i];ok++; } } if (ok==2){ #print format[1] "\t" format[i]; s=$4;e=$5;st=$7;l=e-s; tlen[ti]+=l; # print "DBG "ti,s,e,l,tlen[ti] s1=big-s; if (s1>tmin[ti]){tmin[ti]=s1;} if (e>tmax[ti]){tmax[ti]=e;} tst[ti]=st; tch[ti]=$1; tg[ti]=gi; tgn[ti]=gn; } } }END{ for (ti in tg){ gi=tg[ti]; ng[gi]++; gna[gi]=tgn[ti]; # print "DBG", gi,ti,tlen[ti] tgl[gi]+=tlen[ti]; } for (gi in ng){ print gi,gna[gi],(1.0*tgl[gi])/ng[gi];#average transcript length } }