diff是用来比较两个文本文件的差异的工具,它有三种格式,下面用实例介绍一下:
准备三个测试文件1.txt 2.txt 3.txt
bixiaopeng@bixiaopengtekiMacBook-Pro ~$ cat 1.txt姓名:毕小朋年龄:保密性别:公的博客:blog.csdn.net/wirelessqa微博:www.weibo.com/wirelessqa邮箱:wirelessqa.me@gmail.combixiaopeng@bixiaopengtekiMacBook-Pro ~$ cat 2.txt姓名:毕小朋年龄:28性别:公的博客:blog.csdn.net/wirelessqa微博:www.weibo.com/wirelessqa邮箱:wirelessqa.me@gmail.combixiaopeng@bixiaopengtekiMacBook-Pro ~$ cat 3.txt姓名:毕小朋年龄:保密性别:公的QQ:782670627博客:blog.csdn.net/wirelessqa微博:www.weibo.com/wirelessqa邮箱:wirelessqa.me@gmail.com说明:1.txt跟2.txt相比内容有修改,1.txt跟3.txt相比3.txt内容有增加,3.txt与1.txt相比内容有所减少
一. 正常格式的diff
格式:$ diff <变动前的文件> <变动后的文件>
内容改变(c,代表change)
bixiaopeng@bixiaopengtekiMacBook-Pro ~$ diff 1.txt 2.txt2c2< 年龄:保密---> 年龄:28小解其意: 2c2表示文件1第二行内容改变,变动后变为文件2的第二行,c表示内容改变 < 年龄:保密 表示该行被去除 --- :分享符 > 年龄:28 : 增加了该行,“年龄:28 ”是内容
"增加"(a,代表addition)
bixiaopeng@bixiaopengtekiMacBook-Pro ~$ diff 1.txt 3.txt3a4> QQ:782670627
"删除"(d,代表deletion)
bixiaopeng@bixiaopengtekiMacBook-Pro ~$ diff 3.txt 1.txt4d3< QQ:782670627
二. 上下文格式的diff
格式:$ diff -c <变动前的文件> <变动后的文件>
说明:-c表示:content
内容改变(change)
"增加"(+)
bixiaopeng@bixiaopengtekiMacBook-Pro ~$ diff -c 1.txt 3.txt*** 1.txt Mon Aug 12 22:54:56 2013--- 3.txt Mon Aug 12 23:08:08 2013****************** 1,6 ****--- 1,7 ---- 姓名:毕小朋 年龄:保密 性别:公的+ QQ:782670627 博客:blog.csdn.net/wirelessqa 微博:www.weibo.com/wirelessqa 邮箱:wirelessqa.me@gmail.com
"删除"(-)
bixiaopeng@bixiaopengtekiMacBook-Pro ~$ diff -c 3.txt 1.txt*** 3.txt Mon Aug 12 23:08:08 2013--- 1.txt Mon Aug 12 22:54:56 2013****************** 1,7 **** 姓名:毕小朋 年龄:保密 性别:公的- QQ:782670627 博客:blog.csdn.net/wirelessqa 微博:www.weibo.com/wirelessqa 邮箱:wirelessqa.me@gmail.com--- 1,6 ----
三. 合并格式的diff
如果两个文件相似度很高,那么上下文格式的diff将显示大量重复的内容,很浪费空间,"合并格式"的diff就是将两个文件的上下文合并在一起显示
格式:$ diff -u <变动前的文件> <变动后的文件>
内容改变
bixiaopeng@bixiaopengtekiMacBook-Pro ~$ diff -u 1.txt 2.txt--- 1.txt 2013-08-12 22:54:56.000000000 +0800+++ 2.txt 2013-08-12 22:56:19.000000000 +0800@@ -1,5 +1,5 @@ 姓名:毕小朋-年龄:保密+年龄:28 性别:公的 博客:blog.csdn.net/wirelessqa 微博:www.weibo.com/wirelessqa
小解其意:
---表示变动前的文件 +++表示变动后的文件 开始行和结束行都用@@ 它将两个文件的上下文,合并显示在一起,所以叫做"合并格式"。每一行最前面的标志位,空表示无变动,减号表示第一个文件删除的行,加号表示第二个文件新增的行。"增加"(+)
bixiaopeng@bixiaopengtekiMacBook-Pro ~$ diff -u 1.txt 3.txt--- 1.txt 2013-08-12 22:54:56.000000000 +0800+++ 3.txt 2013-08-12 23:08:08.000000000 +0800@@ -1,6 +1,7 @@ 姓名:毕小朋 年龄:保密 性别:公的+QQ:782670627 博客:blog.csdn.net/wirelessqa 微博:www.weibo.com/wirelessqa 邮箱:wirelessqa.me@gmail.com
"删除"(-)
bixiaopeng@bixiaopengtekiMacBook-Pro ~$ diff -u 3.txt 1.txt--- 3.txt 2013-08-12 23:08:08.000000000 +0800+++ 1.txt 2013-08-12 22:54:56.000000000 +0800@@ -1,7 +1,6 @@ 姓名:毕小朋 年龄:保密 性别:公的-QQ:782670627 博客:blog.csdn.net/wirelessqa 微博:www.weibo.com/wirelessqa 邮箱:wirelessqa.me@gmail.com