[英]using awk to extract a specific pattern
我解釋我的問題。
我有一個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";
依此類推...然后我想找到一條命令,提取其第一CDS以a密碼子階段0(第7列)開頭的FIRST CDS,以及其FIRST CDS以1或a開頭的那一部分。 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從階段1開始:
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";
如您所見,因為示例transcript_id“ g60.t1的轉寫具有從第2階段開始的第一個CDS,所以所有屬於該轉錄本的所有后續CDS都必須傳輸到同一文件中。
謝謝您的幫助,希望有人能找到解決方案:)? 我以為awk可以幫上忙嗎?
awk
解救!
$ awk '!($1 in a){fn = "phase_"$8; a[$1]} {print > fn}' file
我想你的意思是第八列。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.