dividir colunas diferentes de um arquivo com delimitador diferente e imprimir apenas parte dele

0

Eu tenho um arquivo delimitado por guias com o seguinte formato (várias colunas):

#CHROM  POS ID  REF ALT QUAL    FILTER  INFO    FORMAT  NORMAL
1   22  .   C   A   .   PASS    aa;bb;cc    ee:ff:rr:dd xx:vv:yy:zz
1   34  .   G   T   .   PASS    aa;bb;cc    ee:ff:rr:dd xx:vv:yy:zz
1   56  .   C   G   .   PASS    aa;bb;cc    ee:ff:rr:dd xx:vv:yy:zz

resultado desejado:

1   22  C   A   .   zz  vv/yy   cc
1   34  G   T   .   zz  vv/yy   cc
1   56  C   G   .   zz  vv/yy   cc

Eu tentei seguir para alcançar parcialmente a tarefa acima, mas parece que não está funcionando:

Alguém pode sugerir uma solução com o awk ou sed?

    
por aan 02.11.2017 / 01:35

1 resposta

2

Você pode conseguir o que deseja usando um regex para o separador de campo. Supondo que : e ; sejam separadores de subcampo para os campos 9 e 10 no exemplo que você forneceu, aqui está um exemplo de como imprimir campos e subcampos específicos:

$ awk -F'[\t|;|:]' '{ print $1,$2,$4,$5,$18, $10, $16, $22 }' file
1 1278229 C A . SSC=7 FREQ 40%

Sua descrição atual dos sub-campos que você não está claro e sua saída de amostra é ainda mais incerta, mas você deve ser capaz de modificar meu exemplo para obter a saída desejada.

    
por 02.11.2017 / 02:24