
Parent=gopAga1_...........-R.;パターンがあるすべての行から-R *を削除する必要があるgffファイルがあります。
単一遺伝子のファイル構造を以下に示しますが、ファイル内のすべての遺伝子に対してグローバルな変更を行う必要があります。
>2446 17292 . + . ID=gopAga1_00004497-RA;Parent=gopAga1_00004497;Name=gopAga1_00004497-RA;Alias=augustus_masked-scaffold4362-processed-gene-0.0-mRNA-1;_AED=0.12;_QI=0|0.8|0.81|1|1|1|11|1368|404;_eAED=0.12;Note=Similar to PLAT: Tissue-type plasminogen activator (Pongo abelii);
>scaffold4362 maker exon 2446 2545 . + . ID=gopAga1_00004497-RA:exon:4045;Parent=gopAga1_00004497-RA;
>scaffold4362 maker exon 6721 6834 . + . ID=gopAga1_00004497-RA:exon:4046;Parent=gopAga1_00004497-RA;
>scaffold4362 maker exon 7241 7415 . + . ID=gopAga1_00004497-RA:exon:4047;Parent=gopAga1_00004497-RA;
>scaffold4362 maker exon 10114 10205 . + . ID=gopAga1_00004497-RA:exon:4048;Parent=gopAga1_00004497-RA;
>scaffold4362 maker exon 10478 10649 . + . ID=gopAga1_00004497-RA:exon:4049;Parent=gopAga1_00004497-RA;
>scaffold4362 maker exon 11037 11122 . + . ID=gopAga1_00004497-RA:exon:4050;Parent=gopAga1_00004497-RA;
>scaffold4362 maker exon 11518 11713 . + . ID=gopAga1_00004497-RA:exon:4051;Parent=gopAga1_00004497-RA;
>scaffold4362 maker exon 12794 12930 . + . ID=gopAga1_00004497-RA:exon:4052;Parent=gopAga1_00004497-RA;
>scaffold4362 maker exon 13006 13146 . + . ID=gopAga1_00004497-RA:exon:4053;Parent=gopAga1_00004497-RA;
>scaffold4362 maker exon 14920 15047 . + . ID=gopAga1_00004497-RA:exon:4054;Parent=gopAga1_00004497-RA;
>scaffold4362 maker exon 16051 17292 . + . ID=gopAga1_00004497-RA:exon:4055;Parent=gopAga1_00004497-RA;
私はパターンを見つけるためにsedを使用していますが、行の最後の数字とセミコロンの間のすべての内容を削除するためにsedを使用する方法がわかりません。
現在のスクリプトは機能しますか?予想される出力は次のとおりです。
sed 's/Parent=gopAga1_.....-R.;$/Parent=gopAga1.....;/ gop.gff
>2446 17292 . + . ID=gopAga1_00004497-RA;Parent=gopAga1_00004497;Name=gopAga1_00004497-RA;Alias=augustus_masked-scaffold4362-processed-gene-0.0-mRNA-1;_AED=0.12;_QI=0|0.8|0.81|1|1|1|11|1368|404;_eAED=0.12;Note=Similar to PLAT: Tissue-type plasminogen activator (Pongo abelii);
>scaffold4362 maker exon 2446 2545 . + . ID=gopAga1_00004497-RA:exon:4045;Parent=gopAga1_00004497;
>scaffold4362 maker exon 6721 6834 . + . ID=gopAga1_00004497-RA:exon:4046;Parent=gopAga1_00004497;
>scaffold4362 maker exon 7241 7415 . + . ID=gopAga1_00004497-RA:exon:4047;Parent=gopAga1_00004497;
>scaffold4362 maker exon 10114 10205 . + . ID=gopAga1_00004497-RA:exon:4048;Parent=gopAga1_00004497;
>scaffold4362 maker exon 10478 10649 . + . ID=gopAga1_00004497-RA:exon:4049;Parent=gopAga1_00004497;
>scaffold4362 maker exon 11037 11122 . + . ID=gopAga1_00004497-RA:exon:4050;Parent=gopAga1_00004497;
>scaffold4362 maker exon 11518 11713 . + . ID=gopAga1_00004497-RA:exon:4051;Parent=gopAga1_00004497;
>scaffold4362 maker exon 12794 12930 . + . ID=gopAga1_00004497-RA:exon:4052;Parent=gopAga1_00004497;
>scaffold4362 maker exon 13006 13146 . + . ID=gopAga1_00004497-RA:exon:4053;Parent=gopAga1_00004497;
>scaffold4362 maker exon 14920 15047 . + . ID=gopAga1_00004497-RA:exon:4054;Parent=gopAga1_00004497;
>scaffold4362 maker exon 16051 17292 . + . ID=gopAga1_00004497-RA:exon:4055;Parent=gopAga1_00004497;
答え1
おそらく:
sed 's/-R[^;]*;$/;/'
または
awk -F ';' -f OFS=';' '{sub(/-R.*/, "",$(NF-1))}; 1'
答え2
$ sed '/^>.*Parent=samp1_/s/-R.;$/;/' <file.fa
>ID=samp1_00004497:4045;Parent=samp1_00004497;
>ID=samp1_00004497:4046;Parent=samp1_00004498;
>ID=samp1_00004497:4047;Parent=samp1_00004499;
>ID=samp1_00004497:4048;Parent=samp1_00004496;
上記のコマンドは文字列sed
で始まり、それを含むすべての行を検索し、各行の終わり(単一文字が一致する場所)をに置き換えます。一致で終わらない行は変更されません。>
Parent=samp1_
-R.;
.
;
-R.;
文字以外の文字を最後まで削除するには、点をに変更します-R.;
。[^;]*
;
;
更新された質問の代わりにをParent=gopAga1_
使用してくださいParent=samp1_
。
答え3
コマンドライン
sed -re 's/([^-]+).+?;/\1;/g'
各行の内容全体-
(除外)を出力し、-
最後にセミコロンを追加します。
修正する
sed -re 's/(_.{8})-R./\1/g'
_
thenの8文字に基づいて不要な文字が削除されます-R
。