csv2(어디서나)에서 csv1(열 1)의 패턴을 찾아 csv1(열 2)의 패턴과 바꾸고 싶습니다.
이와 같이:
-csv1-
열 1 | 2열 |
---|---|
AA | 전자 데이터 센터 |
BB | ysc |
CC | CD |
DD | 에르그 |
...등
-csv2-
열 1 | 2열 | 3열 | ...등등(더 많은 열) |
---|---|---|---|
BB | 킬로줄 | 와아 | PDS |
xsd | tkp | 에텝 | AA |
xrg | AA | DD | CC |
공주 | 레코 | BLB | DD |
티피 | 쉬운 | CC | 월드 와이드 웹 |
해결책은 이 게시물과 유사합니다…두 개의 서로 다른 csv 파일의 열을 비교하고 다른 파일의 열을 바꾸는 방법
제안:
$ awk '
BEGIN { FS=OFS="," }
NR==FNR { map[$1] = $2; next }
(FNR>1) && ($4 in map) { $4 = map[$4] }
1' file2 file1
이것은 나에게 효과적입니다. 네 번째 열뿐만 아니라 모든 열을 검색하도록 지정하면 됩니다.
답변1
단일 열 대신 모든 열을 체크인하려면 모든 열을 반복하고 각 열의 대체 여부를 확인해야 합니다.
awk '
BEGIN { FS=OFS="," }
NR==FNR { map[$1] = $2; next }
FNR>1{
for (i=1; i<=NF; i++) $i = ($i in map?map[$i]:$i)
}1' csv1 csv2