即使原gff文件中没有exon的信息,可以用 脚本 | Shell | 提取每个转录本exon坐标 中的方法,比较取巧地得到。
    然后,intron的坐标可以根据exon坐标得到。

    • 获得exon坐标
    1. awk 'BEGIN{OFS="\t"}$0 !~ /#/{if($3=="exon"){gsub(/.*Parent=/, "", $9);gsub(/;.*/, "", $9);print $1,$4,$5,$7,$3,$9}}' a.exon.gff | sort -k 6,6 -k 2,2n > a.exon.tsv

    如:

    1. Chr1 3631 3913 + exon AT1G01010.1.TAIR10
    2. Chr1 3996 4276 + exon AT1G01010.1.TAIR10
    3. Chr1 4486 4605 + exon AT1G01010.1.TAIR10
    4. Chr1 4706 5095 + exon AT1G01010.1.TAIR10
    5. Chr1 5174 5326 + exon AT1G01010.1.TAIR10
    6. Chr1 5439 5899 + exon AT1G01010.1.TAIR10
    • 提取intron坐标
    1. awk 'BEGIN{OFS="\t"}{if(intron[$6]==""){intron[$6]=$6; start=$3+1; next;} else print $1,start,$2-1,$4,"intron",$6;start=$3+1}' a.exon.tsv

    结果:

    1. Chr1 3914 3995 + intron AT1G01010.1.TAIR10
    2. Chr1 4277 4485 + intron AT1G01010.1.TAIR10
    3. Chr1 4606 4705 + intron AT1G01010.1.TAIR10
    4. Chr1 5096 5173 + intron AT1G01010.1.TAIR10
    5. Chr1 5327 5438 + intron AT1G01010.1.TAIR10

    请批评指正。