标题:diff详解,读懂diff结果,主要用它打patch,因为现在都是在Linux上运行在wijdows上diff居多了。 出处:向东博客 专注WEB应用 构架之美 --- 构架之美,在于尽态极妍 | 应用之美,在于药到病除 时间:Wed, 24 Aug 2016 07:52:47 +0000 作者:jackxiang 地址:http://jackxiang.com/post/8910/ 内容: 一般都要sort排序一下后再比对为好: sort eee.txt > eeee.txt sort fff.txt > ffff.txt diff -c eeee.txt ffff.txt —————————————————— 抄来抄去,直接看这篇文章得了: http://blog.chinaunix.net/uid-26000296-id-3507646.html 这儿注意大于小于的含义: diff cccc.txt dddd.txt 19a20 > 999 备注:大于是指左边文件没有右边有。 而用-c提示相比上面这种方法更直观一些: diff -c cccc.txt dddd.txt *** cccc.txt 2016-12-02 16:00:25.378913370 +0800 --- dddd.txt 2016-12-02 16:00:58.528306679 +0800 *************** *** 17,19 **** --- 17,20 ---- 10.71.182.93 10.71.182.96 10.71.182.99 + 999 注意:改变位置会在其前面三行和后面三行,因此一共显示7行。 文件内容的每一行最前面,还有一个标记位。如果为空,表示该行无变化;如果是感叹号(!),表示该行有改动;如果是减号(-),表示该行被删除;如果是加号(+),表示该行为新增。 ===================================== 假设有两个文件: //file1.txt I need to buy apples. I need to run the laundry. I need to wash the dog. I need to get the car detailed. //file2.txt I need to buy apples. I need to do the laundry. I need to wash the car. I need to get the dog detailed. 我们使用diff比较他们的不同:diff file1.txt file2.txt 2,4c2,4 前面的数字2,4表示第一个文件中的行,中间有一个字母c表示需要在第一个文件上做的操作(a=add,c=change,d=delete),后面的数字2,4表示第二个文件中的行。 2,4c2,4 的含义是:第一个文件中的第[2,4]行(注意这是一个闭合区间,包括第2行和第4行)需要做出修改才能与第二个文件中的[2,4]行相匹配。接下来的内容则告诉我们需要修改的地方,前面带 < 的部分表示左边文件的第[2,4]行的内容,而带> 的部分表示右边文件的第[2,4]行的内容,中间的 --- 则是两个文件内容的分隔符号。 打patch的比较最常用: -e 将比较的结果保存成一个ed脚本,之后ed程序可以执行该脚本文件,从而将file1修改成与file2一样的文字内容: [root@iZ25dcp92ckZ diff]# diff -e 1.txt 2.txt > script.txt diff: 1.txt: 没有那个文件或目录 diff: 2.txt: 没有那个文件或目录 [root@iZ25dcp92ckZ diff]# diff -e file1.txt file2.txt > script.txt [root@iZ25dcp92ckZ diff]# cat script.txt 7c I need to get the dog detailed. . 5c I need to wash the car. . 3c I need to do the laundry. . 1c need to buy apples. . [root@iZ25dcp92ckZ diff]# 这样就是生成了一个ed可以执行的脚本文件script.txt,生成脚本文件之后我们还需要做一个操作, 在脚本文件末尾添加ed的write指令,只需要执行 echo "w" >>script.txt 将w指令附加到脚本文件的最后一行即可。 那么如何应用该脚本文件呢,可以这样使用: ed - file1.txt < script.txt 注意中间的 – 符号表示从标准输入中读取,而 < script.txt 则重定向script.txt的内容到标准输入。这样执行之后1.txt的内容将与2.txt完全相同。 [root@iZ25dcp92ckZ ~]# cd /tmp/diff [root@iZ25dcp92ckZ diff]# echo "w" >>script.txt [root@iZ25dcp92ckZ diff]# ed - file1.txt < script.txt [root@iZ25dcp92ckZ diff]# diff file1.txt file2.txt [root@iZ25dcp92ckZ diff]# 比对发现一样,得证。 来自: 【diff详解,读懂diff结果】 http://m.pstatp.com/group/6321440713972171010/?iid=5181229840&app=news_article&tt_from=android_share&utm_medium=toutiao_android&utm_campaign=client_share Generated by Jackxiang's Bo-blog 2.1.1 Release