Como remover seletivamente colunas e linhas com bash?

1

Atualmente, tenho um conjunto de dados semelhante a este:

ENTRADA

   
Hybridization REF   TCGA-FA-8693-01A-11D-2399-05    TCGA-FA-8693-01A-11D-2399-05    TCGA-FA-8693-01A-11D-2399-05    TCGA-FA-8693-01A-11D-2399-05    TCGA-FA-A4BB-01A-11D-A31Y-05    TCGA-FA-A4BB-01A-11D-A31Y-05    TCGA-FA-A4BB-01A-11D-A31Y-05    TCGA-FA-A4BB-01A-11D-A31Y-05
Composite Element REF   Beta_value  Gene_Symbol Chromosome  Genomic_Coordinate  Beta_value  Gene_Symbol Chromosome  Genomic_Coordinate
cg00000029  0.856505141 RBL2    16  53468112    0.334665026 RBL2    16  53468112
cg00000108  NA  C3orf35 3   37459206    NA  C3orf35 3   37459206
cg00000109  NA  FNDC3B  3   171916037   NA  FNDC3B  3   171916037

O conjunto de dados é muito maior e tem quase 10 GB de tamanho. Tão grande para fazer em R, por exemplo.

No entanto, muitas das colunas são efetivamente duplicadas. Por exemplo, só preciso manter uma de cada uma das colunas intituladas (segunda linha) Gene_Symbol , Chromosome e Genomic_Coordinate . As colunas Beta_value individuais precisam permanecer porque são diferentes para cada amostra. IDs de amostra estão na primeira linha. Então, um exemplo de saída desejada do acima é:

SAÍDA DESEJADA

Hybridization REF   Gene_Symbol Chromosome  Genomic_Coordinate  TCGA-FA-8693-01A-11D-2399-05    TCGA-FA-A4BB-01A-11D-A31Y-05
cg00000029  RBL2    16  53468112    0.856505141 0.334665026
cg00000108  C3orf35 3   37459206    NA  NA
cg00000109  FNDC3B  3   171916037   NA  NA

Note que eu embaralhei os cabeçalhos das colunas na primeira linha para remover informações redundantes.

Qual é a maneira mais eficiente de fazer isso com o bash?

    
por user3313178 18.04.2016 / 22:32

1 resposta

2

Supondo que seus cabeçalhos sejam apenas as duas linhas na parte superior do arquivo, eu apenas os corrigia manualmente. (Maneira fácil: canalizar tail -n +3 para pular as duas primeiras linhas; depois, concatenar com um arquivo com os cabeçalhos desejados.)

Depois, o resto que você pode fazer com cut , cujo padrão é dividir em caracteres [TAB], o que é super conveniente porque é o que você já tem. Apenas cano para

cut -f1,3,6

ou qualquer outra coisa (nesse exemplo, selecionando a primeira, terceira e sexta coluna).

    
por 18.04.2016 / 23:19