0

0

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

P粉602998670

P粉602998670

发布时间:2025-09-01 10:57:01

|

1028人浏览过

|

来源于php中文网

原创

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

输出:

Civitai
Civitai

AI艺术分享平台!海量SD资源和开源模型。

下载
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 工具进一步分析。

相关专题

更多
format在python中的用法
format在python中的用法

Python中的format是一种字符串格式化方法,用于将变量或值插入到字符串中的占位符位置。通过format方法,我们可以动态地构建字符串,使其包含不同值。php中文网给大家带来了相关的教程以及文章,欢迎大家前来阅读学习。

719

2023.07.31

python中的format是什么意思
python中的format是什么意思

python中的format是一种字符串格式化方法,用于将变量或值插入到字符串中的占位符位置。通过format方法,我们可以动态地构建字符串,使其包含不同值。本专题为大家提供相关的文章、下载、课程内容,供大家免费下载体验。

431

2024.06.27

数据库Delete用法
数据库Delete用法

数据库Delete用法:1、删除单条记录;2、删除多条记录;3、删除所有记录;4、删除特定条件的记录。更多关于数据库Delete的内容,大家可以访问下面的文章。

274

2023.11.13

drop和delete的区别
drop和delete的区别

drop和delete的区别:1、功能与用途;2、操作对象;3、可逆性;4、空间释放;5、执行速度与效率;6、与其他命令的交互;7、影响的持久性;8、语法和执行;9、触发器与约束;10、事务处理。本专题为大家提供相关的文章、下载、课程内容,供大家免费下载体验。

212

2023.12.29

自建git服务器
自建git服务器

git服务器是目前流行的分布式版本控制系统之一,可以让多人协同开发同一个项目。本专题为大家提供自建git服务器相关的各种文章、以及下载和课程。

703

2023.07.05

git和svn的区别
git和svn的区别

git和svn的区别:1、定义不同;2、模型类型不同;3、存储单元不同;4、是否拥有全局版本号;5、内容完整性不同;6、版本库不同;7、克隆目录速度不同;8、分支不同。php中文网为大家带来了git和svn的相关知识、以及相关文章等内容。

551

2023.07.06

git撤销提交的commit
git撤销提交的commit

Git是一个强大的版本控制系统,它提供了很多功能帮助开发人员有效地管理和控制代码的变更,本专题为大家提供git 撤销提交的commit相关的各种文章内容,供大家免费下载体验。

265

2023.07.24

git提交错误怎么撤回
git提交错误怎么撤回

git提交错误撤回的方法:git reset head^:撤回最后一次提交,恢复到提交前状态。git revert head:创建新提交,内容与之前提交相反。git reset :使用提交的 sha-1 哈希撤回指定提交。交互式舞台区:标记要撤回的特定更改,然后提交,排除已撤回更改。本专题为大家提供相关的文章、下载、课程内容,供大家免费下载体验。

550

2024.04.09

c++ 根号
c++ 根号

本专题整合了c++根号相关教程,阅读专题下面的文章了解更多详细内容。

25

2026.01.23

热门下载

更多
网站特效
/
网站源码
/
网站素材
/
前端模板

精品课程

更多
相关推荐
/
热门推荐
/
最新课程
PostgreSQL 教程
PostgreSQL 教程

共48课时 | 7.7万人学习

Git 教程
Git 教程

共21课时 | 2.9万人学习

关于我们 免责申明 举报中心 意见反馈 讲师合作 广告合作 最新更新
php中文网:公益在线php培训,帮助PHP学习者快速成长!
关注服务号 技术交流群
PHP中文网订阅号
每天精选资源文章推送

Copyright 2014-2026 https://www.php.cn/ All Rights Reserved | php.cn | 湘ICP备2023035733号