【Linux常用工具】1.1 diff命令的三种格式


diff是用来比较两个文本文件的差异的工具,它有三种格式,下面用实例介绍一下:

准备三个测试文件1.txt 2.txt 3.txt

bixiaopeng@bixiaopengtekiMacBook-Pro ~$ cat 1.txt
姓名:毕小朋
年龄:保密
性别:公的
博客:blog.csdn.net/wirelessqa
微博:www.weibo.com/wirelessqa
邮箱:wirelessqa.me@gmail.com
bixiaopeng@bixiaopengtekiMacBook-Pro ~$ cat 2.txt
姓名:毕小朋
年龄:28
性别:公的
博客:blog.csdn.net/wirelessqa
微博:www.weibo.com/wirelessqa
邮箱:wirelessqa.me@gmail.com
bixiaopeng@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.txt
2c2
< 年龄:保密
---
> 年龄:28


小解其意:
2c2表示文件1第二行内容改变,变动后变为文件2的第二行,c表示内容改变

< 年龄:保密 表示该行被去除
--- :分享符
> 年龄:28 : 增加了该行,“年龄:28 ”是内容

"增加"(a,代表addition)

bixiaopeng@bixiaopengtekiMacBook-Pro ~$ diff 1.txt 3.txt
3a4
> QQ:782670627

"删除"(d,代表deletion)

bixiaopeng@bixiaopengtekiMacBook-Pro ~$ diff 3.txt 1.txt
4d3
< 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



原文地址:https://www.cnblogs.com/pangblog/p/3257991.html