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的結果把我添加的新內容都顯示出來了!

相關文章
相關標籤/搜索