Chinaunix

标题: 求助:处理出现特定次数的行 [打印本页]

作者: xunong    时间: 2015-03-26 13:06
标题: 求助:处理出现特定次数的行
如题,文本结构如下,每个有transcript的行都分别下跟一个或多个有exon的行,现在想删掉只下跟一个exon的transcript行以及相应的exon行,对应多个exon的transcript行以及下跟的exon行保留:

chr1    Cufflinks       transcript      91582   119759  1000    -       .       gene_id CUFF.39 transcript_id CUFF.39.1 FPKM 798897154.6755199432 frac 0.300954 conf_lo 361375353.338330 conf_hi 1236418956.012710 cov 12.034815 full_read_support yes
chr1    Cufflinks       exon    91582   91629   1000    -       .       gene_id CUFF.39 transcript_id CUFF.39.1 exon_number 1 FPKM 798897154.6755199432 frac 0.300954 conf_lo 361375353.338330 conf_hi 1236418956.012710 cov 12.034815
chr1    Cufflinks       exon    92091   92240   1000    -       .       gene_id CUFF.39 transcript_id CUFF.39.1 exon_number 2 FPKM 798897154.6755199432 frac 0.300954 conf_lo 361375353.338330 conf_hi 1236418956.012710 cov 12.034815
chr1    Cufflinks       exon    119646  119759  1000    -       .       gene_id CUFF.39 transcript_id CUFF.39.1 exon_number 3 FPKM 798897154.6755199432 frac 0.300954 conf_lo 361375353.338330 conf_hi 1236418956.012710 cov 12.034815
chr1    Cufflinks       transcript      237537  522332  342     -       .       gene_id CUFF.39 transcript_id CUFF.39.2 FPKM 273759590.6156416535 frac 0.316860 conf_lo 49720029.561747 conf_hi 497799151.669536 cov 4.123993 full_read_support yes
chr1    Cufflinks       exon    237537  237955  342     -       .       gene_id CUFF.39 transcript_id CUFF.39.2 exon_number 1 FPKM 273759590.6156416535 frac 0.316860 conf_lo 49720029.561747 conf_hi 497799151.669536 cov 4.123993
chr1    Cufflinks       exon    522201  522332  342     -       .       gene_id CUFF.39 transcript_id CUFF.39.2 exon_number 2 FPKM 273759590.6156416535 frac 0.316860 conf_lo 49720029.561747 conf_hi 497799151.669536 cov 4.123993
chr1    Cufflinks       transcript      237537  238641  1000    .       .       gene_id CUFF.40 transcript_id CUFF.40.1 FPKM 127910966.2401581556 frac 0.382161 conf_lo 38242411.050446 conf_hi 217579521.429870 cov 1.926887 full_read_support yes
chr1    Cufflinks       exon    237537  238641  1000    .       .       gene_id CUFF.40 transcript_id CUFF.40.1 exon_number 1 FPKM 127910966.2401581556 frac 0.382161 conf_lo 38242411.050446 conf_hi 217579521.429870 cov 1.926887
chr1    Cufflinks       transcript      238183  238245  79      .       .       gene_id CUFF.40 transcript_id CUFF.40.2 FPKM 10117979.3656947725 frac 0.000025 conf_lo 0.000000 conf_hi 18075836346.382442 cov 0.152420 full_read_support yes
chr1    Cufflinks       exon    238183  238245  79      .       .       gene_id CUFF.40 transcript_id CUFF.40.2 exon_number 1 FPKM 10117979.3656947725 frac 0.000025 conf_lo 0.000000 conf_hi 18075836346.382442 cov 0.152420

预计得到:
chr1    Cufflinks       transcript      91582   119759  1000    -       .       gene_id CUFF.39 transcript_id CUFF.39.1 FPKM 798897154.6755199432 frac 0.300954 conf_lo 361375353.338330 conf_hi 1236418956.012710 cov 12.034815 full_read_support yes
chr1    Cufflinks       exon    91582   91629   1000    -       .       gene_id CUFF.39 transcript_id CUFF.39.1 exon_number 1 FPKM 798897154.6755199432 frac 0.300954 conf_lo 361375353.338330 conf_hi 1236418956.012710 cov 12.034815
chr1    Cufflinks       exon    92091   92240   1000    -       .       gene_id CUFF.39 transcript_id CUFF.39.1 exon_number 2 FPKM 798897154.6755199432 frac 0.300954 conf_lo 361375353.338330 conf_hi 1236418956.012710 cov 12.034815
chr1    Cufflinks       exon    119646  119759  1000    -       .       gene_id CUFF.39 transcript_id CUFF.39.1 exon_number 3 FPKM 798897154.6755199432 frac 0.300954 conf_lo 361375353.338330 conf_hi 1236418956.012710 cov 12.034815
chr1    Cufflinks       transcript      237537  522332  342     -       .       gene_id CUFF.39 transcript_id CUFF.39.2 FPKM 273759590.6156416535 frac 0.316860 conf_lo 49720029.561747 conf_hi 497799151.669536 cov 4.123993 full_read_support yes
chr1    Cufflinks       exon    237537  237955  342     -       .       gene_id CUFF.39 transcript_id CUFF.39.2 exon_number 1 FPKM 273759590.6156416535 frac 0.316860 conf_lo 49720029.561747 conf_hi 497799151.669536 cov 4.123993
chr1    Cufflinks       exon    522201  522332  342     -       .       gene_id CUFF.39 transcript_id CUFF.39.2 exon_number 2 FPKM 273759590.6156416535 frac 0.316860 conf_lo 49720029.561747 conf_hi 497799151.669536 cov 4.123993


求大神支招!
作者: jason680    时间: 2015-03-26 13:36
回复 1# xunong

$ awk '$3=="transcript"{if(exon>1)print s;s=$0;exon=0}$3=="exon"{exon++;s=s"\n"$0}END{if(exon>1)print s}' FILE
chr1    Cufflinks       transcript      91582   119759  1000    -       .       gene_id CUFF.39 transcript_id CUFF.39.1 FPKM 798897154.6755199432 frac 0.300954 conf_lo 361375353.338330 conf_hi 1236418956.012710 cov 12.034815 full_read_support yes
chr1    Cufflinks       exon    91582   91629   1000    -       .       gene_id CUFF.39 transcript_id CUFF.39.1 exon_number 1 FPKM 798897154.6755199432 frac 0.300954 conf_lo 361375353.338330 conf_hi 1236418956.012710 cov 12.034815
chr1    Cufflinks       exon    92091   92240   1000    -       .       gene_id CUFF.39 transcript_id CUFF.39.1 exon_number 2 FPKM 798897154.6755199432 frac 0.300954 conf_lo 361375353.338330 conf_hi 1236418956.012710 cov 12.034815
chr1    Cufflinks       exon    119646  119759  1000    -       .       gene_id CUFF.39 transcript_id CUFF.39.1 exon_number 3 FPKM 798897154.6755199432 frac 0.300954 conf_lo 361375353.338330 conf_hi 1236418956.012710 cov 12.034815
chr1    Cufflinks       transcript      237537  522332  342     -       .       gene_id CUFF.39 transcript_id CUFF.39.2 FPKM 273759590.6156416535 frac 0.316860 conf_lo 49720029.561747 conf_hi 497799151.669536 cov 4.123993 full_read_support yes
chr1    Cufflinks       exon    237537  237955  342     -       .       gene_id CUFF.39 transcript_id CUFF.39.2 exon_number 1 FPKM 273759590.6156416535 frac 0.316860 conf_lo 49720029.561747 conf_hi 497799151.669536 cov 4.123993
chr1    Cufflinks       exon    522201  522332  342     -       .       gene_id CUFF.39 transcript_id CUFF.39.2 exon_number 2 FPKM 273759590.6156416535 frac 0.316860 conf_lo 49720029.561747 conf_hi 497799151.669536 cov 4.123993

   
作者: 我是一隻羊    时间: 2015-03-26 14:00
本帖最后由 我是一隻羊 于 2015-03-26 14:18 编辑
  1. awk --re-interval '/transcript /{i++}{a[i]=/exon/?a[i]"\n"$0:$0}END{for(i=0;i++<length(a);)printf match(a[i],/(.* exon .*){2,}/)?a[i]"\n":""}' inputfile
复制代码
  1. awk '/transcript /{a[++i]=$0}/exon /{b[i]++;a[i]=a[i]"\n"$0}END{for(i=0;i++<length(a);){printf b[i]>=2?a[i]"\n":""}}' inputfile
复制代码

作者: itfly3    时间: 2015-03-26 16:53
本帖最后由 itfly3 于 2015-03-26 16:55 编辑

回复 2# jason680
您好,
   awk '/transcript/{if(exon>1)print s;s=$0;exon=0}/exon/{exon++;s=s"\n"$0}END{if(exon>1)print s}' file
请问下$3=="transcript"换成/transcript/为什么就不能正常输出

ee,看到了,exon中包含的有transcript字段




欢迎光临 Chinaunix (http://bbs.chinaunix.net/) Powered by Discuz! X3.2