2010-10-17 56 views
5

想象你有2個texfiles(比方說500kB - 3 MB大):第一個是原創的,第二個是這個原創的更新。我如何知道,更改(插入,刪除)以及更改發生的位置(在更新文件中與原始文件相比較)?2個文本文件的比較:進行了哪些更改和哪些更改?

  1. 有沒有工具或庫的地方?
  2. 在任何公知的文本編輯器中駐留這個函數嗎?
  3. 有人知道算法嗎?或者大規模解決它的常用方法是什麼?
  4. 如果您遇到這種問題,您會怎麼做?

thanx您的想法...

+0

souregear的DiffMerge是免費的... – 2010-10-17 11:40:07

+0

@Mitch小麥 - 謝謝,看起來不錯... – lyborko 2010-10-17 12:09:46

回答

1

你可以嘗試Notepad++它是有一個比較文件插入一個開源的文本編輯器。

2

什麼你所描述的完全一樣diff聲音風格的工具。許多更高級的文本編輯器都提供這種功能。

+0

一段時間後你的答案我發現,至少Open Office有這個功能......謝謝... – lyborko 2010-10-17 11:59:44

1

維基百科上有一個extensive list of file comparison tools

如果您想以編程方式執行此操作,我以前在Unix系統上使用過SEDAWK - 並且有Windows版本。基本上,這些類型的文件處理語言允許您逐行讀取和比較文本文件,然後允許您對差異進行一些操作(例如將它們保存到第三個文件中)。

+0

非常感謝上面的鏈接。我試圖自己開發這個小工具,但在我看來很難重新發明很久以前發明的東西......現在我不確定,如果我自己在應用程序中實現它,或者我每次都使用一些比較工具。 – lyborko 2010-10-17 12:07:49

0

是否有任何工具或庫的某處?

還有很多。嘗試使用diff,這是一個基於命令行的文件比較實用程序,適用於小差異。但是,如果這兩個文件差別很大,就很難理解diff的輸出。在這種情況下,您可以使用diffmerge,Kompare或vimdiff等可視化文件差異工具。

在任何衆所周知的文本編輯器中駐留此函數嗎?

許多現代的編輯器如vim,Eclipse中有這個可視版本比較功能..

有誰知道的算法?或者大規模解決它的常用方法是什麼?

它基於Longest common subsequence algorithm,俗稱LCS。

舊文本和新文本的LCS給出保持不變的部分。因此,不屬於LCS的舊文本的部分是被改變的部分。

如果您遇到這種問題,您會怎麼做?

我會使用提到的視覺比較工具之一來查看做出了哪些更改以及在哪裏進行了更改。

相關問題