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