emacs 对比文件 对比文件差异的命令_linux

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