AWK 스크립트의 Vlookup과 동일

AWK 스크립트의 Vlookup과 동일

두 개의 파일이 있는데 file1의 값을 file2의 값으로 바꾸고 싶습니다.

파일 1:

Normal   A1
Normal   A2
Normal   A2,A3
Normal   A4

파일 2:

APP1      A1
APP2   A2
APP3   A3
APP4   A4

예상되는 결과:

Normal   APP1
Normal   APP2
Normal   APP2,APP3
Normal   APP4

다음 명령을 시도했지만 예상한 결과를 얻지 못했습니다.

awk 'NR == FNR{a[$2]=$1; next};  -F "," {for (i=1; i<=NF; ++i) if ($i ~ ",") $i=a[$i]; else if ($i in a) $i=a[$i]; print}' File2 File1

답변1

가능성 중 하나awk방법:

awk -F'[[:space:]]+|,' 'NR == FNR{ a[$2] = $1; next }
     { 
         c = 0; r = $1 OFS; 
         for (i = 2; i <= NF; i++)
             if ($i in a) { r = r (c++? "," : "") a[$i] } 
         if (!c) r = r $2; 
         print r 
     }' file2 file1

산출:

Normal APP1
Normal APP2
Normal APP2,APP3
Normal APP4

관련 정보