como alterar o conteúdo de uma coluna

1

Eu tenho essa entrada;

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";

Eu adoraria ter essa saída;

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";

como posso usar o comando sed no linux para obter a saída desejada? obrigado Kay

    
por Kay NewEdge Daramola 02.01.2018 / 04:36

1 resposta

1

Geralmente é uma boa ideia explicar a lógica de substituição e algumas condições de fronteira, por isso não há necessidade de adivinhar. Você não fez, então eu tenho que fazer algumas suposições:

  • Você deseja fazer substituições se a última coluna da linha for g seguida por qualquer número (talvez com vários dígitos) e um opcional .t1 (sempre 1 )
  • Não importa se a linha tem um .t1 ou não, o transcript_id deve ser suficiente .t1 , o gene_id não deve
  • Os delimitadores de coluna são espaços em branco

Nesse caso, o script a seguir deve funcionar. Caso contrário, você precisa adaptá-lo:

sed -E 's/ (g[0-9]*)(\.t1)?$/ transscript_id ".t1"; gene_id "";/' yourfile

    
por 02.01.2018 / 10:48

Tags