다른 두 열 csv 테이블을 사용하여 csv 파일에서 일치하는 패턴을 교환하는 방법

다른 두 열 csv 테이블을 사용하여 csv 파일에서 일치하는 패턴을 교환하는 방법

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

관련 정보