diff in linux

"when you use 'diff', what do you think?"html

当我第1次用diff的时候,我是这样想的:2个文件的不一样处有不少种状况,diff是如何处理的呢?git

搜了几篇关于用法的网页:都是讲参数、输出结果的解读。。都不能回答上面的问题。github


diff用3种行为描述不一样之处,并经过这3种操做,可使2个文件变为相同。算法

3种操做是:add, delete, change;htm


但实际状况是:有多种不一样的操做使2个文件相同,那么diff用的是什么算法?ip

举例:it

file1;     file2;io

1,              4,file

2,              1,cgi

3,              3,

4,              2,

diff的第1个操做输出是:

0a1

>4

即,file1前添加4,,使第1行与file2相同;

可是,要使2文件的第1行相同,还可能的操做是:

方法1》file2删除第1行;

方法2》file1删除前3行。


为何diff选择了上述的输出?

因而我又搜索了相关资料,发现diff的背后并不简单,不过有1点是肯定的:那就是算法!


有关算法的资料:

http://en.wikipedia.org/wiki/Diff#Algorithm

http://stackoverflow.com/questions/805626/diff-algorithm

http://c2.com/cgi/wiki?DiffAlgorithm

http://www.faqs.org/rfcs/rfc3284.html

https://github.com/paulgb/simplediff

固然我并非说非要去了解这些算法,相反我以为并不须要了解他们。

但到此为止,算是解除了心头的疑惑;


那么,该用diff作些什么,何时用diff,何时diff的结果对咱们有帮助呢?

我刚用,还不能回答;

我试了1下,对1个修改过的文件和原文件;

结果不错:修改的内容都是添加,因而diff的结果把我添加的新内容都显示出来了!

相关文章
相关标签/搜索