![AWK 스크립트의 Vlookup과 동일](https://linux55.com/image/129077/AWK%20%EC%8A%A4%ED%81%AC%EB%A6%BD%ED%8A%B8%EC%9D%98%20Vlookup%EA%B3%BC%20%EB%8F%99%EC%9D%BC.png)
두 개의 파일이 있는데 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