Performance

區分兩個大文本文件

  • February 7, 2013

我有兩個大文件(每個 6GB)。它們未排序,以換行符 ( \n) 作為分隔符。我怎樣才能區分它們?它應該在 24 小時內完成。

最明顯的答案就是使用 diff 命令,將 –speed-large-files 參數添加到它可能是一個好主意。

diff --speed-large-files a.file b.file

您提到未排序的文件,因此您可能需要先對文件進行排序

sort a.file > a.file.sorted
sort b.file > b.file.sorted
diff --speed-large-files a.file.sorted b.file.sorted

您可以通過將第二個排序輸出直接傳遞到 diff 來節省創建額外的輸出文件

sort a.file > a.file.sorted
sort b.file | diff --speed-large-files a.file.sorted -

顯然,這些將在具有大量可用記憶體的系統上執行得最好,並且您可能也需要大量可用磁碟空間。

從您的問題中不清楚您之前是否嘗試過這些。如果是這樣,那麼知道出了什麼問題(花了太長時間等)會很有幫助。我一直發現 stock sort 和 diff 命令的性能至少與自定義命令一樣好,除非文件有一些非常特定於域的屬性使得可以以不同的方式做事。

引用自:https://unix.stackexchange.com/questions/2150