私はこの入力を持っています。
scaffold10x_1 AUGUSTUS gene 72040 72306 0.67 - . g4
scaffold10x_1 AUGUSTUS transcript 72040 72306 0.67 - . g4.t1
scaffold10x_1 AUGUSTUS stop_codon 72040 72042 . - 0 transcript_id "g4.t1"; gene_id "g4";
scaffold10x_1 AUGUSTUS CDS 72040 72306 0.67 - 0 transcript_id "g4.t1"; gene_id "g4";
scaffold10x_1 AUGUSTUS exon 72040 72306 . - . transcript_id "g4.t1"; gene_id "g4";
scaffold10x_1 AUGUSTUS start_codon 72304 72306 . - 0 transcript_id "g4.t1"; gene_id "g4";
scaffold10x_1 AUGUSTUS gene 72500 72970 0.99 - . g5
scaffold10x_1 AUGUSTUS transcript 72500 72970 0.99 - . g5.t1
scaffold10x_1 AUGUSTUS stop_codon 72500 72502 . - 0 transcript_id "g5.t1"; gene_id "g5";
scaffold10x_1 AUGUSTUS CDS 72500 72970 0.99 - 0 transcript_id "g5.t1"; gene_id "g5";
scaffold10x_1 AUGUSTUS exon 72500 72970 . - . transcript_id "g5.t1"; gene_id "g5";
scaffold10x_1 AUGUSTUS start_codon 72968 72970 . - 0 transcript_id "g5.t1"; gene_id "g5";
私はこのような出力をしたいと思います。
scaffold10x_1 AUGUSTUS gene 72040 72306 0.67 - . transcript_id "g4.t1"; gene_id "g4";
scaffold10x_1 AUGUSTUS transcript 72040 72306 0.67 - . transcript_id "g4.t1"; gene_id "g4";
scaffold10x_1 AUGUSTUS stop_codon 72040 72042 . - 0 transcript_id "g4.t1"; gene_id "g4";
scaffold10x_1 AUGUSTUS CDS 72040 72306 0.67 - 0 transcript_id "g4.t1"; gene_id "g4";
scaffold10x_1 AUGUSTUS exon 72040 72306 . - . transcript_id "g4.t1"; gene_id "g4";
scaffold10x_1 AUGUSTUS start_codon 72304 72306 . - 0 transcript_id "g4.t1"; gene_id "g4";
scaffold10x_1 AUGUSTUS gene 72500 72970 0.99 - . transcript_id "g5.t1"; gene_id "g5";
scaffold10x_1 AUGUSTUS transcript 72500 72970 0.99 - . transcript_id "g5.t1"; gene_id "g5";
scaffold10x_1 AUGUSTUS stop_codon 72500 72502 . - 0 transcript_id "g5.t1"; gene_id "g5";
scaffold10x_1 AUGUSTUS CDS 72500 72970 0.99 - 0 transcript_id "g5.t1"; gene_id "g5";
scaffold10x_1 AUGUSTUS exon 72500 72970 . - . transcript_id "g5.t1"; gene_id "g5";
scaffold10x_1 AUGUSTUS start_codon 72968 72970 . - 0 transcript_id "g5.t1"; gene_id "g5";
Linuxでsedコマンドを使用して目的の出力を取得するには?ありがとう、カイ
ベストアンサー1
一般に、代替ロジックといくつかの境界条件を説明するのが最善であるため、推測する必要はありません。そうではないので、いくつかの仮定をする必要があります。
g
行の最後の列の後に数字(複数の場合があります)とオプション.t1
(常に)が続く場合は、変更したいと1
思います。- ラインにaがあってもなくても、十分でなければならず、あって
.t1
はなりません。transcript_id
.t1
gene_id
- 列区切り記号は空白です。
この場合、次のスクリプトが機能するはずです。それ以外の場合は、次のように調整する必要があります。
sed -E 's/ (g[0-9]*)(\.t1)?$/ transscript_id "\1.t1"; gene_id "\1";/' yourfile