Colunas correspondentes de diferentes arquivos csv, não funcionando quando o valor da coluna é diferente

0

Eu estou combinando 3 colunas entre um arquivo csv grande e um pequeno arquivo csv e gravá-los em um arquivo de saída. Há muitas perguntas aqui que ajudaram, mas não consigo encontrar a resposta para o problema específico que estou encontrando. Quando a entrada da coluna é mais curta, não está encontrando a correspondência.

Minha solução é baseada na solução aqui: compare duas colunas de arquivos diferentes e imprima se corresponder a

As colunas correspondentes devem ser small1 == large120002, small2 == large120003, small3 == large120004.

O que estou tentando ...

awk -F, 'NR==FNR{c[$1,$2,$3]++;next};c[$120002,$120003,$120004] > 0' small.csv large.csv > output.csv

Isso funciona, mais ou menos. Isso exclui as linhas em que large120002 é um int com menos de 9 caracteres de comprimento. (Até agora os valores para large120002 têm 7-9 caracteres).

Já se deparou com esse problema antes? Se possível, gostaria de ficar com uma solução awk.

    
por Chinntimes 16.04.2018 / 22:07

1 resposta

1

Acabou que era um problema de transmissão, então adicionei 0 às colunas para garantir que ambas estivessem sendo tratadas da mesma forma pelo awk.

Com a ajuda de: link

Isso acabou funcionando ..

awk -F, 'NR==FNR{c[$1+0,$2,$3]++;next};c[$120002+0,$120003,$120004] > 0' small.csv large.csv > output.csv
    
por 16.04.2018 / 22:23

Tags