diff 命令的功能是用于比较文件内容差异。如果有多个内容相近的文件,使用 diff 命令快速定位到不同内容所在位置就再合适不过了!
目录
一、语法格式
二、常用参数
三、命令实战
3.1 以正常格式输出需要更改的比较结果
3.2 以正常格式输出需要增加和删除的比较结果
3.3 以上下文格式输出比较结果
3.4 以合并格式输出比较结果
3.5 输出比较结果不区分大小写
3.6 以并列方式显示异同之处
一、语法格式
diff [参数] 文件1 文件2
二、常用参数
-b | 不检查空格字符的不同 |
-W | 指定栏宽 |
-c | 以上下文格式显示 |
-u | 以合并格式显示 |
-y | 以并列的方式显示文件的异同之处 |
--brief | 仅判断两个文件是否不同 |
三、命令实战
3.1 以正常格式输出需要更改的比较结果
[root@linux1 ~]# diff a.txt b.txt
3c3
< dddddd
---
> eeeeee
3c3:左边的"3"表示 a.txt 第3行有变化,中间的"c"表示变动模式(change),其他模式还包括:增加(a,代表addition) 和 删除 (d,代表deletion), 后面的"3"表示变动后变成 b.txt 的第3行
< dddddd:小于号表示从 b.txt 第3行缺少该行,"dddddd"表示该行内容
---:用来分隔a.txt 和 b.txt
> eeeeee:大于号表示 a.txt 第3行缺少该行,"eeeeee"表示该行内容
3.2 以正常格式输出需要增加和删除的比较结果
[root@linux1 ~]# cat a.txt b.txt
aaaaaa
bbbbbb
dddddd
cccccc
eeeeee
aaaaaa
bbbbbb
eeeeee
cccccc
[root@linux1 ~]# diff a.txt b.txt
3,4d2
< dddddd
< cccccc
5a4
> cccccc
3,4d2:"3,4"表示 a.txt 的第3行和第4行,中间的"d"表示删除模式(deletion),"2"表示 b.txt 的第2行,整体意思是删除 a.txt 的第3行和第4行以匹配 b.txt 的第2行
5a4:"5"表示 a.txt 的第5行,中间的"a"表示增加模式(addition),"4"表示 b.txt 的第二行,整体意思是 在 a.txt 第5行后添加 b.txt 第4行内容
3.3 以上下文格式输出比较结果
[root@linux1 ~]# diff -c a.txt b.txt
*** a.txt 2023-04-20 19:06:02.858032131 +0800
--- b.txt 2023-04-21 14:25:41.067584874 +0800
***************
*** 1,5 ****
aaaaaa
bbbbbb
! dddddd
cccccc
--- 1,5 ----
aaaaaa
bbbbbb
! eeeeee
cccccc
***:表示变动前文件(a.txt)
---:表示变动后文件(b.txt)
*******:文件的基本情况和变动内容分割线
*** 1,5 ****:文件 a.txt 从第1行开始连续5行
文件内容前标记位,如果为空表示该行无变化,如果是"!"表示该行有改动,如果是"-",表示该行被删除,如果是"+"表示该行为新增
--- 1,5 ----:文件 b.txt 从第1行开始连续5行
3.4 以合并格式输出比较结果
[root@linux1 ~]# diff -u a.txt b.txt
--- a.txt 2023-04-20 19:06:02.858032131 +0800
+++ b.txt 2023-04-21 14:25:41.067584874 +0800
@@ -1,5 +1,5 @@
aaaaaa
bbbbbb
-dddddd
+eeeeee
cccccc
---:表示变动前的文件(a.txt)
+++: 表示变动后的文件(b.txt)
@@:表示起首和结束
-1,5:"-"表示第一个文件(即 a.txt)"1"表示第一行,"5"表示连续5行,合起来的意思是第一个文件从第1行开始连续5行
+1,5:"+"表示第二个文件(即 b.txt)其余同上,合起来的意思是第二个文件从第1行开始连续5行
-dddddd:"-"表示第二个文件(即 b.txt)缺少的行 +eeeeee:"+"表示第一个文件(即 a.txt)缺少的行
3.5 输出比较结果不区分大小写
[root@linux1 ~]# diff -i a.txt b.txt
[root@linux1 ~]# diff a.txt b.txt
1c1
< Aaaaaa
---
> aaaaaa
3.6 以并列方式显示异同之处
[root@linux1 ~]# diff -y a.txt b.txt
Aaaaaa | aaaaaa
bBbbbb | bbbbbb
eeeeee eeeeee
cccccc cccccc