如何比较文件差异 diff命令逐行对比分析

diff命令用于比较两个文件的差异,掌握其语法、输出格式和常用选项可高效定位变化;1. 基础语法为diff 文件1 文件2,内容相同时无输出,不同时显示差异行;2. 默认输出中a表示添加、c表示修改、d表示删除,行号和符号说明如何从文件1变为文件2;3. 常用选项包括-u生成统一格式(显示上下文,+为新增,-为删除)、-i忽略大小写、-w忽略空白符、-b忽略空行、-r递归比较目录;4. 实用场景有检查配置变更、代码审查、生成补丁(结合patch命令)及脚本中判断文件是否相同;建议日常使用diff -u提升可读性,复杂情况可结合vimdiff或gui工具分析,从而完整掌握文件对比方法。

如何比较文件差异 diff命令逐行对比分析

在 Linux 或类 Unix 系统中,

diff

命令是用于比较两个文件之间差异的常用工具。它能逐行分析文本文件,找出内容不同的地方,并以简洁的方式展示这些差异。掌握

diff

的基本用法和输出格式,有助于快速定位代码、配置文件或日志之间的变化。


一、diff 命令基础语法

diff 文件1 文件2
diff

会逐行对比两个文件,如果内容相同,则无输出;如果有差异,会显示具体哪些行被修改、添加或删除。

例如:

diff file1.txt file2.txt

如果

file1.txt

file2.txt

内容一致,终端不会显示任何内容;若有不同,将输出差异部分。


二、理解 diff 的输出格式

diff

默认使用“正常格式”(normal format),输出包含行号和操作符,说明如何从文件1变为文件2。

常见符号含义:

  • a

    :add,表示在文件2中新增的行

  • c

    :change,表示文件1中的行被修改为文件2中的行

  • d

    :delete,表示文件1中的行在文件2中被删除

示例说明:

假设

file1.txt

内容为:

apple banana cherry
file2.txt

内容为:

apple grape cherry date

执行:

diff file1.txt file2.txt

输出:

2c2,3 < banana --- > grape > date

解释:

  • 2c2,3

    :文件1的第2行被修改,对应文件2的第2到第3行

  • < banana

    :文件1中的内容

  • ---

    :分隔符

  • > grape

    > date

    :文件2中替换后的内容

这表示“banana”被替换为“grape”和“date”两行。


三、常用 diff 选项提升可读性

默认输出对新手不够友好,可通过选项改善:

1.

-u

--unified

:生成统一格式输出(推荐)

diff -u file1.txt file2.txt

输出示例:

@@ -1,3 +1,3 @@  apple -banana +grape  cherry +date
  • -

    表示文件1有但文件2没有的行

  • +

    表示文件2新增或修改的行

  • 上下文默认显示3行,便于理解变更上下文

这种格式广泛用于代码版本控制(如 Git),更清晰易读。

2.

-i

:忽略大小写差异

diff -i file1.txt file2.txt

Apple

Apple

视为相同。

3.

-w

:忽略空白字符(空格、制表符)

diff -w file1.txt file2.txt

适合比较格式调整但内容一致的文件。

4.

-B

:忽略空行差异

diff -B file1.txt file2.txt

防止因换行符或空行导致误报。

5.

-r

:递归比较目录

diff -r dir1/ dir2/

逐个比较两个目录下所有同名文件。


四、实用技巧与场景

  • 检查配置文件变更系统升级前后对比
    /etc

    下的配置文件。

  • 代码审查辅助:用
    diff -u old.c new.c

    快速生成补丁。

  • 结合 patch 使用
    diff

    输出可保存为补丁文件,用

    patch

    应用更改。

    diff -u old.txt new.txt > patch.diff patch old.txt < patch.diff
  • 脚本中判断文件是否相同
    if diff file1 file2 > /dev/null; then     echo "文件相同" else     echo "文件不同" fi

基本上就这些。

diff

虽然输出格式初看有点晦涩,但掌握关键符号和常用选项后,就能高效地进行文件对比。建议日常使用时搭配

-u

选项,提升可读性。对于图形化需求,也可结合

vimdiff

或 GUI 工具进一步分析。

linux git 工具 系统升级 date format 递归 delete git linux unix

上一篇
下一篇