0
하나는 새로운 업데이트가 있고 다른 하나는 이전 업데이트가있는 동일한 형식의 두 파일이 있습니다. 특정 고유 ID 열은 없습니다.여러 열을 기반으로 두 CSV 파일을 비교하고 별도의 파일로 저장
새로운 업데이트 된 행 (UNIX, PHP, AWK) 만 추출하려면 어떻게해야합니까?
하나는 새로운 업데이트가 있고 다른 하나는 이전 업데이트가있는 동일한 형식의 두 파일이 있습니다. 특정 고유 ID 열은 없습니다.여러 열을 기반으로 두 CSV 파일을 비교하고 별도의 파일로 저장
새로운 업데이트 된 행 (UNIX, PHP, AWK) 만 추출하려면 어떻게해야합니까?
당신은 "바이트"다른 라인에 대한 모든 행을 비교하려면, 그래서 내가 할 것 :
$lines1 = file('file1.txt');
$lines2 = file('file2.txt');
$lookup = array();
foreach($lines1 as $line) {
$key = crc32($line);
if (!isset($lookup[$key])) $lookup[$key] = array();
$lookup[$key][] = $line;
}
foreach($lines2 as $line) {
$key = crc32($line);
$found = false;
if (isset($lookup[$key])) {
foreach($lookup[$key] as $lookupLine) {
if (strcmp($lookupLine, $line) == 0) {
$found = true;
break;
}
}
}
// check if not found
if (!$found) {
// output to file or do something
}
}
참고 파일이 매우 큰 경우이 꽤 많은 메모리를 소비하는 것입니다 그리고 당신은 일부를 사용합니다 다른 메커니즘이지만 생각은 동일하게 유지됩니다