Anexa nomes de arquivos ao arquivo csv se corresponder id

0

Eu tenho dois arquivos

arquivo1

159211;exampleimage002.JPG
159212;example.jpg
159212;example with space.jpg
...

arquivo2

13;"OVET";"O1";"OVET/ULKO-OVET";159212;"JELDWEN BASIC 0015 9*21 VASEN";"KPL";1;345;1;0;"Toinen testituote";
13;"OVET";"O1";"OVET/ULKO-OVET";159211;"JELDWEN BASIC 0015 9*21 OIKEA";"KPL";1;345;1;0;"Myös rivinvaihdot siirtyvät";
...

O que eu preciso é adicionar os nomes das imagens como uma nova coluna, vários arquivos de imagem separados por "|". O ID deve corresponder, por exemplo, 159212 (primeira coluna do arquivo1 e quinta coluna do arquivo2). Eu tentei isso usando o awk, mas falhei miseravelmente.

Saída desejada (file3), a única diferença é a última coluna:

13;"OVET";"O1";"OVET/ULKO-OVET";159212;"JELDWEN BASIC 0015 9*21 VASEN";"KPL";1;345;1;0;"Toinen testituote";"exampleimage002.JPG";
13;"OVET";"O1";"OVET/ULKO-OVET";159211;"JELDWEN BASIC 0015 9*21 OIKEA";"KPL";1;345;1;0;"Myös rivinvaihdot siirtyvät";"example.jpg|example with space.jpg";
    
por SamSwampwater 08.08.2016 / 14:10

1 resposta

0

Que tal

awk -F\; '
  NR==FNR {
    if (a[$1]=="") {
      a[$1]="\""$2
    } else {
      a[$1]=a[$1]"|"$2
    }
    next;
  }
  {
    print $0 a[$5] "\""
  }
  ' file1 file2 > file3

Nota: isso pressupõe que exista pelo menos uma correspondência para cada ID. Caso contrário, você provavelmente obterá uma cotação de fechamento curta. Se isso é um problema, você poderia adicionar um teste para não-vazio de a[$5] antes de imprimir.

    
por 08.08.2016 / 15:39