Modifica uma string para remover caracteres

0

Eu tenho um arquivo de texto onde o código de barras está na coluna 18. Estou interessado em remover os últimos 16 caracteres de um código de barras TCGA para uma longa lista de amostras ou, como alternativa, quero imprimir apenas os 12 primeiros caracteres da string da coluna 18 para uma nova coluna. Os caracteres diferem em cada linha do arquivo, então não posso simplesmente usar o comando sed para remover caracteres seguindo um determinado caractere.

Por exemplo: TCGA-2E-A9G8-01A-11D-A403-09 precisa estar em curto com o TCGA-2E-A9G8 e imprimir o ID abreviado em uma nova coluna

Já vi respostas como: echo "$ {string: 0: -16}" Sou muito novo na programação, por isso não sei como automatizar isso para uma planilha com mais de 300.000 linhas e direcionada para uma coluna específica

    
por Meghan 07.06.2018 / 15:52

1 resposta

3

Usando awk :

awk '{print substr($18,1,12)}' input

Isso imprimirá os caracteres 1-12 da coluna 18. Isso pressupõe que seu arquivo de texto esteja separado por espaço em branco. O que provavelmente não é.

Para CSV:

awk -F, '{print substr($18,1,12)}' input

Com base no comentário da Steeldriver para adicionar essa saída a uma nova coluna:

awk '{$(NF+1) = substr($18,1,12)} 1' input > output

Infelizmente, isso cria um novo arquivo. gawk pode modificar um arquivo, mas sua melhor aposta é criar um novo arquivo e depois remover o arquivo antigo.

    
por 07.06.2018 / 15:58

Tags