我有两个文件
文件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 第五列)。我尝试使用 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 至少有一个匹配项 - 否则您可能会得到一个虚假的尾随关闭引号。如果这是一个问题,您可以在a[$5]
打印之前添加一个非空测试。