IDが一致する場合は、ファイル名をcsvファイルに追加します。

IDが一致する場合は、ファイル名をcsvファイルに追加します。

ファイルが2つあります。

ファイル1

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

ファイル2

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";
...

必要なのは、「|」で区切られた複数のイメージファイルを含む新しい列にイメージ名を追加することです。 IDは一致する必要があります(例:159212(ファイル1の最初の列とファイル2の5番目の列))。私はこれをするためにawkを使ってみましたが、悲惨に失敗しました。

(file3)を出力したい場合の唯一の違いは最後の列です。

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";

ベストアンサー1

どうですか?

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

注:これは、IDごとに1つ以上の一致があると仮定します。そうしないと、偽の末尾の閉じる引用符が表示されることがあります。これが問題の場合は、a[$5]印刷する前にnull以外のテストを追加できます。

おすすめ記事