簡體   English   中英

比較基於多個列的兩個csv文件並保存在單獨的文件中

[英]Comparing two csv files based on multiple columns and save in separate file

我有兩個格式相同的文件,其中一個具有新的更新,另一個具有較舊的更新。 沒有特定的唯一ID列。

如何僅提取新的更新行(使用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
  }
}

請注意,如果文件很大,這將消耗相當多的內存,並且您需要使用其他機制,但是想法保持不變

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM