ファイルが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以外のテストを追加できます。