想象你有2个texfiles(比方说500kB - 3 MB大):第一个是原始的,第二个是这个原始的更新。如何查找,更改(插入,删除)的内容以及更改发生的位置(在更新文件中与原始文件进行比较)?
Thanx为你的想法...
答案 0 :(得分:2)
您所描述的内容听起来就像一个diff风格的工具。许多更高级的文本编辑器都提供了这种功能。
答案 1 :(得分:1)
您可以尝试Notepad++它是一个开源文本编辑器,插入了比较文件。
答案 2 :(得分:1)
维基百科上有extensive list of file comparison tools。
如果你想以编程方式进行,我之前在Unix系统上使用过SED和AWK - 并且有windows版本。基本上,这些类型的文件处理语言允许您逐行读取和比较文本文件,然后允许您对差异执行某些操作(例如将它们保存到第三个文件)。
答案 3 :(得分:0)
某处有工具或图书馆吗?
有很多。尝试使用diff
,这是一个基于命令行的文件比较实用程序,适用于小差异。但是如果这两个文件差别很大,那么很难理解diff的输出。在这种情况下,您可以使用视觉文件差异工具,如diffmerge,Kompare或vimdiff。
在任何众所周知的文本编辑器中都有这个功能吗?
许多现代编辑如vim,Eclipse都有这种视觉差异功能..
有人知道算法吗?或者大规模解决这个问题的常用方法是什么?
它基于Longest common subsequence algorithm
,俗称LCS。
旧文本和新文本的LCS给出了保持不变的部分。因此,不属于LCS的旧文本部分是变更的部分。
如果遇到这种问题,你会怎么做?
我会使用其中一个视觉差异工具来查看更改的内容和位置。
答案 4 :(得分:0)
unix diff工具可以实现逐行差异;有一个名为wdiff的GNU工具,它将逐字区分,并且应该作为大多数Linux发行版或Cygwin的包提供。
关于算法的经典论文是:
答案 5 :(得分:0)
GNU Diffutils http://www.gnu.org/software/diffutils/