une arquivos com coluna variável e números de linha e com base em 1 campo

0

Desculpe antecipadamente se é muito básico, eu sou um novato. Eu tenho dois arquivos (arquivo1 e arquivo2). Eu quero olhar no arquivo1 coluna 6 e se corresponder a uma entrada na coluna 1 do arquivo 2, imprima o conteúdo dessa linha para o final do arquivo 1, para criar um novo arquivo. Abaixo estão os meus arquivos, e como eu gosto deles. Eu tentei abaixo e não funciona, a saída está vazia.

sort -k6 file 1 > file1_sorted

sort –k1 file2 > file2_sorted

join -1 6 -2 1 -o 1.1,1.2,1.3,1.4,1.5,1.6,2.1,2.2,2.3,2.4,2.5,2.6,2.7,2.8,2.9,2.10,2.11,2.12,2.13 file1_sorted file2_sorted > file3

Isso pode ter ocorrido porque a associação está errada ou porque o arquivo 1 não está classificado corretamente ou ambos. Ambos os arquivos são csv, o arquivo 2 está bem, mas o arquivo 1 parece ter alguns espaços vazios após a última coluna que quando eu tento escolher a coluna 6 do arquivo1 via awk '{print $6} file 1 >test , não funciona… Eu não tenho ideia do porquê. Eu tentei remover guias usando sed etc. mas sem sorte. Por favor ajude!

Arquivo 1 (5052 linhas, 6 colunas)

rs28595482,1,1,1953576,ENSG00000187730,GABRD
rs2376805,1,1,1956362,ENSG00000187730,GABRD
rs2229110,1,1,1957037,ENSG00000187730,GABRD
rs3820007,1,1,1957299,ENSG00000187730,GABRD
rs28409373,1,1,1959978,ENSG00000187730,GABRD
rs2376803,1,1,1967954,NA,GABRD
rs11582799,1,1,7832026,ENSG00000269925,VAMP3

arquivo 2 (344 linhas, 13 colunas)

GABRD,16,0,0,gaba,0,0,oxt,0,0,0,0,0
ABCG1,21,0,0,0,0,cort,0,0,0,0,0,0
VAMP3,0,0,0,0,0,0,0,0,0,0,0,0
ADAMTS2,0,0,0,0,0,0,0,0,0,0,0,0
ADAMTSL1,9,0,0,0,0,0,oxt,0,0,0,0,rest
ADCY7,16,0,0,0,0,cort,0,0,0,0,0,0

O que eu espero receber depois de alguma mágica (arquivo 3)

rs28595482,1,1,1953576,ENSG00000187730,GABRD,16,0,0,gaba,0,0,oxt,0,0,0,0,0
rs2376805,1,1,1956362,ENSG00000187730,GABRD,16,0,0,gaba,0,0,oxt,0,0,0,0,0
rs2229110,1,1,1957037,ENSG00000187730,GABRD,16,0,0,gaba,0,0,oxt,0,0,0,0,0
rs3820007,1,1,1957299,ENSG00000187730,GABRD,16,0,0,gaba,0,0,oxt,0,0,0,0,0
rs28409373,1,1,1959978,ENSG00000187730,GABRD,16,0,0,gaba,0,0,oxt,0,0,0,0,0
rs2376803,1,1,1967954,NA,GABRD, 16,0,0,gaba,0,0,oxt,0,0,0,0,0
rs11582799,1,1,7832026,ENSG00000269925, VAMP3,0,0,0,0,0,0,0,0,0,0,0,0
    
por Elham 15.03.2017 / 15:05

1 resposta

0

Você está tão perto . O que você precisa fazer é dizer join o que usar para o terminador de entrada, neste caso -t, :

join -t, -1 6 -2 1 -o 1.1,1.2,1.3,1.4,1.5,1.6,2.1,2.2,2.3,2.4,2.5,2.6,2.7,2.8,2.9,2.10,2.11,2.12,2.13 file1_sorted file2_sorted > file3

BTW, bom trabalho descrevendo o problema e fornecendo seu exemplo. Tornou simples depurar.

    
por 18.03.2017 / 06:04

Tags