Unindo dois arquivos csv na coluna comum e removendo a segunda última coluna

1

Eu tenho dois arquivos csv:

arquivo1:

C1, 1, 0, 1, 0, 1
C2, 1, 0, 1, 1, 0
C3, 0, 0, 1, 1, 0

arquivo2:

C3, 1.2
C1, 2.3
C2, 1.8

Eu quero mesclar esses dois arquivos com base na coluna C (que produz):

C1, 1, 0, 1, 0, 1, 2.3
C2, 1, 0, 1, 1, 0, 1.8
C3, 0, 0, 1, 1, 0, 1.2

Em seguida, remova a segunda última coluna (para produzir):

C1, 1, 0, 1, 0, 2.3
C2, 1, 0, 1, 1, 1.8
C3, 0, 0, 1, 1, 1.2
    
por Coder 15.11.2018 / 07:19

2 respostas

1

Você acabou de criar um hash-map no segundo arquivo da coluna C e usá-lo no primeiro arquivo, conforme abaixo. As ações logo a seguir FNR==NR se aplicam ao primeiro arquivo especificado no final e a ação subsequente acontece no último arquivo. Isso ocorre devido às variáveis especiais em awk , FNR e NR , que rastreiam números de linha por arquivo e entre os arquivos, respectivamente.

awk -v FS="," -v OFS="," 'FNR==NR { unique[$1]=$2; next } $1 in unique { $NF=unique[$1]; }1' file2 file1
    
por 15.11.2018 / 07:38
1

Tente também

join -t, -o1.1,1.2,1.3,1.4,1.5,2.2 <(sort file1) <(sort file2)
    
por 15.11.2018 / 11:40