2010-10-17 63 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的旧文本的部分是被改变的部分。

如果您遇到这种问题,您会怎么做?

我会使用提到的视觉比较工具之一来查看做出了哪些更改以及在哪里进行了更改。

相关问题