awk를 사용하여 두 개의 .csv 파일 비교

awk를 사용하여 두 개의 .csv 파일 비교

Awk를 사용하여 두 파일 File1.csv와 File2.csv(","로 구분)를 비교해야 합니다.

논리:

두 파일의 열 PID는 참조용으로만 사용됩니다.

"File1.csv" 및 "File2.csv"의 동일한 "PID"와 두 파일의 "Value" 열 값이 동일한 경우 "File2.csv" 열 "UTS" 값이 업데이트됩니다. "File1"에서 업데이트됨 값을 가져옵니다. csv' 열 'RTS'.

그렇지 않은 경우 "File1.csv" 및 "File2.csv"의 동일한 "PID"와 두 파일의 "Value" 열 값이 동일하지 않은 경우 "File2.csv" 열 "Value, RTS, UTS" 값이 업데이트됩니다. 이 열은 "File1.csv" 열 "Value,RTS,UTS"의 값을 가져옵니다.

파일 1.csv:

PID,Value,RTS
1,50,10:30:00
2,22,10:15:00
3,34,10:18:00
4,54,10:20:00
5,54,10:22:00
6,54,10:25:00
7,80,10:50:00
8,60,10:32:00
9,45,10:35:00

파일 2.csv:

PID,Value,RTS,UTS
1,12,10:10:00,10:14:00
2,22,10:15:00,10:17:00
3,34,10:18:00,10:19:00
4,54,10:20:00,10:21:00
5,54,10:22:00,10:24:00
6,54,10:25:00,10:29:00
7,60,10:30:00,10:31:00
8,60,10:32:00,10:34:00
9,45,10:35:00,10:35:00

산출:

PID,Value,RTS,UTS
1,50,10:30:00,10:30:00
2,22,10:15:00,10:15:00
3,34,10:18:00,10:18:00
4,54,10:20:00,10:20:00
5,54,10:22:00,10:22:00
6,54,10:25:00,10:25:00
7,80,10:50:00,10:50:00
8,60,10:32:00,10:32:00
9,45,10:35:00,10:35:00

답변1

이 시도:

$ awk -F',' '
    FNR == NR {
        if (FNR == 1) {next}
        a[$1] = $2;
        b[$1] = $3;
        next;
    }
    {
        if (FNR == 1) {print;next}
        if (a[$1] == $2) {
            print $1,$2,$3,b[$1];
        }
        else {
            print $1,a[$1],b[$1],b[$1];
        }
    }
  ' OFS=',' file1,file2
PID,Value,RTS,UTS
1,50,10:30:00,10:30:00
2,22,10:15:00,10:15:00
3,34,10:18:00,10:18:00
4,54,10:20:00,10:20:00
5,54,10:22:00,10:22:00
6,54,10:25:00,10:25:00
7,80,10:50:00,10:50:00
8,60,10:32:00,10:32:00
9,45,10:35:00,10:35:00

관련 정보