我解释了我的问题。
我有一个gff格式的大文件,以便:
scaffold_31 AUGUSTUS CDS 18857 19210 0.63 + 0 transcript_id "g56.t1"; gene_id "g56";
scaffold_32 AUGUSTUS CDS 8973 9290 0.82 - 0 transcript_id "g57.t1"; gene_id "g57";
scaffold_32 AUGUSTUS CDS 11374 11507 0.96 - 2 transcript_id "g57.t1"; gene_id "g57";
scaffold_32 AUGUSTUS CDS 11586 11733 0.39 - 0 transcript_id "g57.t1"; gene_id "g57";
scaffold_33 AUGUSTUS CDS 5303 5323 0.83 - 0 transcript_id "g58.t1"; gene_id "g58";
scaffold_33 AUGUSTUS CDS 5810 6034 0.97 - 0 transcript_id "g58.t1"; gene_id "g58";
scaffold_34 AUGUSTUS CDS 1390 1805 0.87 + 1 transcript_id "g59.t1"; gene_id "g59";
scaffold_37 AUGUSTUS CDS 15299 15390 0.91 - 2 transcript_id "g60.t1"; gene_id "g60";
scaffold_37 AUGUSTUS CDS 15622 15826 0.88 - 0 transcript_id "g60.t1"; gene_id "g60";
等等...
而且我想找到一个命令来提取transcrit,其中第一个CDS以密码子阶段0(第7列)开始,以及他们的第一个CDS以1或2开始的那些。然后,我会喜欢得到3个文件,这里是:
第一个文件:成绩单的第一张CDS从第0阶段开始。
scaffold_31 AUGUSTUS CDS 18857 19210 0.63 + 0 transcript_id "g56.t1"; gene_id "g56";
scaffold_32 AUGUSTUS CDS 8973 9290 0.82 - 0 transcript_id
scaffold_32 AUGUSTUS CDS 8973 9290 0.82 - 0 transcript_id "g57.t1"; gene_id "g57";
scaffold_33 AUGUSTUS CDS 5303 5323 0.83 - 0 transcript_id "g58.t1"; gene_id "g58";
scaffold_33 AUGUSTUS CDS 5810 6034 0.97 - 0 transcript_id "g58.t1"; gene_id "g58";
第二阶段,第一阶段的第一张CDS开始于第一阶段:
scaffold_34 AUGUSTUS CDS 1390 1805 0.87 + 1 transcript_id "g59.t1"; gene_id "g59";
第三阶段的成绩单第一张CDS从第二阶段开始:
scaffold_37 AUGUSTUS CDS 15299 15390 0.91 - 2 transcript_id "g60.t1"; gene_id "g60";
scaffold_37 AUGUSTUS CDS 15622 15826 0.88 - 0 transcript_id "g60.t1"; gene_id "g60";
正如您所看到的,由于transmple transcript_id“g60.t1的transcrit的第一个CDS从第2阶段开始,所有属于此转录本的CDS必须转移到同一个文件。
感谢您的帮助,我希望有人能找到解决方案:)?我认为awk可以提供帮助吗?
答案 0 :(得分:0)
awk
救援!
$ awk '!($1 in a){fn = "phase_"$8; a[$1]} {print > fn}' file
我认为你的意思是第8列。