ID가 일치하면 파일 이름을 csv 파일에 추가합니다.

ID가 일치하면 파일 이름을 csv 파일에 추가합니다.

파일이 두 개 있어요

파일 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]인쇄하기 전에 null이 아닌 테스트를 추가할 수 있습니다.

관련 정보