次の情報を含むファイルがあります。
gene 3025..3855
/gene="Sp34_10000100"
/ID="Sp34_10000100"
CDS join(3025..3106,3722..3855)
/gene="Sp34_10000100"
/codon_start=1
/ID="Sp34_10000100.t1.cds1,Sp34_10000100.t1.cds2"
mRNA 3025..3855
/ID="Sp34_10000100.t1"
/gene="Sp34_10000100"
gene 12640..13470
/gene="Sp34_10000200"
/ID="Sp34_10000200"
CDS join(12640..12721,13337..13470)
/gene="Sp34_10000200"
/codon_start=1
/ID="Sp34_10000200.t1.cds1,Sp34_10000200.t1.cds2"
mRNA 12640..13470
/ID="Sp34_10000200.t1"
/gene="Sp34_10000200"
gene 15959..20678
/gene="Sp34_10000300"
/ID="Sp34_10000300"
CDS join(15959..16080,16268..16367,18913..19116,20469..20524,20582..20678)
/gene="Sp34_10000300"
/codon_start=1
/ID="Sp34_10000300.t1.cds1,Sp34_10000300.t1.cds2,Sp34_10000300.t1.cds3,Sp34_10000300.t1.cds4,Sp34_10000300.t1.cds5"
mRNA 15959..20678
/ID="Sp34_10000300.t1"
/gene="Sp34_10000300"
gene 22255..23085
/gene="Sp34_10000400"
/ID="Sp34_10000400"
すべて削除したい遺伝子部分的にはCDSそしてメッセンジャーRNA情報がそこにあるはずです。出力は次のようになります。
CDS join(3025..3106,3722..3855)
/gene="Sp34_10000100"
/codon_start=1
/ID="Sp34_10000100.t1.cds1,Sp34_10000100.t1.cds2"
mRNA 3025..3855
/ID="Sp34_10000100.t1"
/gene="Sp34_10000100"
CDS join(12640..12721,13337..13470)
/gene="Sp34_10000200"
/codon_start=1
/ID="Sp34_10000200.t1.cds1,Sp34_10000200.t1.cds2"
mRNA 12640..13470
/ID="Sp34_10000200.t1"
/gene="Sp34_10000200"
CDS join(15959..16080,16268..16367,18913..19116,20469..20524,20582..20678)
/gene="Sp34_10000300"
/codon_start=1
/ID="Sp34_10000300.t1.cds1,Sp34_10000300.t1.cds2,Sp34_10000300.t1.cds3,Sp34_10000300.t1.cds4,Sp34_10000300.t1.cds5"
mRNA 15959..20678
/ID="Sp34_10000300.t1"
/gene="Sp34_10000300"
これを行う方法の提案を教えてください。
ベストアンサー1
awkは一般的に読みやすく理解しやすくなります。
これは基本的に書く簡単なプログラムです。最初の単語が「gene」である行を見ると、「wewrite」を「0」(=オフ、書き込みなし)に切り替え、次の場合に再びオンにします。彼が見た最初の言葉は「遺伝子」です。最初の単語が「CDS」または「mRNA」の行を参照してください。
awk '
BEGIN { weprint=1 }
( $1 == "gene" ) { weprint=0 }
( $1 == "CDS" ) || ( $1 == "mRNA" ) { weprint=1 }
( weprint == 1) { print $0 ;}
' file_to_read
BEGINは行を読み取る前に完了します。
もう 1 つは( test ) { action if test successful }
各入力行を解析します (... タスクに が含まれていない場合、残りはnext
無視して代わりに次の入力行を取得します)。
これにより、「遺伝子」部分ではなく「CDS」および「mRNA」部分のみが印刷されます。
これは「ゴルフボール」であってもよい。たとえば、成功した「テスト」のための基本的なタスクは$ 0を印刷することであるため、( weprint == 1)
最後の行のようなものを実行できますが、私の考えでは理解するのはあまり明確ではありません...)