diff 功能说明:逐行比较纯文本文件的内容,并输出文件的差异。只能同时比较2个文件。
参数选项:
-y 以并列的方式显示文件的异同之处。
-c 使用上下文的格式输出。
-W 在使用-y参数时,指定显示宽度。
-u 使用统一格式输出。
diff 默认的显示格式有如下三种提示:
a - add
c - change
d - delete
其中,以"<"开头的行属于文件1,以">"开头的行属于文件2。
比较两个文本文件的例子
[root@testdb ~]# cat a.log
1
2
3
4
5
6
[root@testdb ~]# cat b.log
4
5
6
7
8
[root@testdb ~]# diff a.log b.log
1,3d0
< 1
< 2
< 3
6a4,5
> 7
> 8
结果说明:1,3d0 删除a.log文件的第1行到第3行,删除b.log文件的第0行,即不删除。
6a4,5 a.log文件的第6行增加下面2行文本,即b.log文件的第4行和和第5行。
以"<"开头的行属于a.log文件,以">"开头的行属于b.log文件。
并排格式输出
[root@testdb ~]# diff -y a.log b.log
1 <
2 <
3 <
4 4
5 5
6 6
> 7
> 8
[root@testdb ~]#
[root@testdb ~]# diff -y -W 30 a.log b.log
1 <
2 <
3 <
4 4
5 5
6 6
> 7
> 8
上下输出格式
[root@testdb ~]# diff -c a.log b.log
*** a.log 2020-12-16 18:04:19.046069469 +0800
--- b.log 2020-12-16 18:04:33.990048625 +0800
***************
*** 1,6 ****
- 1
- 2
- 3
4
5
6
--- 1,5 ----
4
5
6
+ 7
+ 8
格式说明:"-"表示 b.log 比a.log少的行数。"+"表示 b.log 比a.log多的行数。
统一格式输出
[root@testdb ~]# diff -u a.log b.log
--- a.log 2020-12-16 18:04:19.046069469 +0800
+++ b.log 2020-12-16 18:04:33.990048625 +0800
@@ -1,6 +1,5 @@
-1
-2
-3
4
5
6
+7
+8
比较两个目录
[root@testdb ~]# diff /etc/rc3.d/ /etc/rc6.d/
Only in /etc/rc6.d/: K90network
Only in /etc/rc3.d/: S10network