Este comando sed
fará com que cada linha termine em exatamente um ponto-e-vírgula e que a última palavra em cada linha seja citada:
sed -e 's/"\?\([a-z0-9.]\+\)"\?;*$/"";/' canada.gtf
Aqui está a saída deste comando:
scaffold10x_1 AUGUSTUS gene 3591 3908 0.61 - . "g1";
scaffold10x_1 AUGUSTUS transcript 3591 3908 0.61 - . "g1.t1";
scaffold10x_1 AUGUSTUS stop_codon 3591 3593 . - 0 transcript_id "g1.t1"; gene_id "g1";
scaffold10x_1 AUGUSTUS CDS 3591 3908 0.61 - 0 transcript_id "g1.t1"; gene_id "g1";
scaffold10x_1 AUGUSTUS exon 3591 3908 . - . transcript_id "g1.t1"; gene_id "g1";
scaffold10x_1 AUGUSTUS start_codon 3906 3908 . - 0 transcript_id "g1.t1"; gene_id "g1";
Se você quiser modificar o arquivo no local, use o sinalizador -i
:
sed -i -e 's/"\?\([a-z0-9.]\+\)"\?;*$/"";/' canada.gtf
Se você quiser apenas certificar-se de que cada linha termine com ";
(e você não deseja uma correspondência "
no início da última palavra na linha), poderá usar o seguinte comando:
sed -e 's/"\?;\?$/";/' canada.gtf
E aqui está a saída deste comando:
scaffold10x_1 AUGUSTUS gene 3591 3908 0.61 - . g1";
scaffold10x_1 AUGUSTUS transcript 3591 3908 0.61 - . g1.t1";
scaffold10x_1 AUGUSTUS stop_codon 3591 3593 . - 0 transcript_id "g1.t1"; gene_id "g1";
scaffold10x_1 AUGUSTUS CDS 3591 3908 0.61 - 0 transcript_id "g1.t1"; gene_id "g1";
scaffold10x_1 AUGUSTUS exon 3591 3908 . - . transcript_id "g1.t1"; gene_id "g1";
scaffold10x_1 AUGUSTUS start_codon 3906 3908 . - 0 transcript_id "g1.t1"; gene_id "g1";