Adicionando mais informações a uma string

2

Eu tenho um arquivo gtf como este:

ChrI    Coding_transcript       gene    8451772 8509212 .       -       .       gene_id "UMM-S589-0.12-gene-1"

ChrI    Coding_transcript       exon    8501974 8509212 .       -       .       gene_id "UMM-S589-0.12-gene-1"

ChrI    Coding_transcript       exon    8491643 8501928 .       -       0        gene_id "UMM-S589-0.12-gene-1"

Agora quero adicionar mais informações na coluna 9, para que fique assim:

ChrI    Coding_transcript       exon    8501974 8509212 .       -       .       gene_id "UMM-S589-0.12-gene-1"; transcript_id "UMM-S589-0.12-gene-1", exon_id "1";

ChrI    Coding_transcript       exon    8491643 8501928 .       -       0        gene_id "UMM-S589-0.12-gene-1";transcript_id "UMM-S589-0.12-gene-1", exon_id "2";

Alguém sabe algum comando simples que eu possa usar para fazer este arquivo? Muito obrigado!

    
por filwy 24.08.2018 / 20:14

1 resposta

1

Tente isto:

awk 'NF==10{print $0";transcript_id "$10", exon_id ""\""++count[$3]"\""";"}NF!=10{print $0}' file.gtf

Saída:

ChrI    Coding_transcript       exon    8501974 8509212 .       -       .       gene_id "UMM-S589-0.12-gene-1";transcript_id "UMM-S589-0.12-gene-1", exon_id "1";

ChrI    Coding_transcript       exon    8491643 8501928 .       -       0        gene_id "UMM-S589-0.12-gene-1";transcript_id "UMM-S589-0.12-gene-1", exon_id "2";
  • NF==10 verifica se o número de campos é 10.
    • print $0 imprime a linha completa.
    • transcript_id $10 , já que é igual a gene_id
    • ++count[$3] imprime a ocerância do exon (3º campo)
  • NF!=10 apenas imprime a linha.
por 24.08.2018 / 20:42