Linux比较两个文件内容的差异 diff和vimdiff用法

浅墨吖_3526

浅墨吖_3526

2026-04-09

295人浏览

原创

应优先使用 diff -u 查看差异,其中 + 行为新增、- 行为删除、空格开头行为未变;避免默认格式,注意编码、二进制、大文件及超长行的特殊处理方式。

linux比较两个文件内容的差异 diff和vimdiff用法

diff 命令输出怎么看,哪些行是真正改动的

diff 默认用“正常格式”(normal format)输出,但这种格式对人不友好,容易误判增删方向。实际工作中应优先用 -u(unified)参数:它把上下文一起打出来,+ 行是新增,- 行是删除, (空格)开头的是未变行。

  • 别直接跑 diff file1 file2,默认输出难读,尤其文件稍大时根本分不清谁改了谁
  • diff -u file1 file2 是底线配置;加 --color=always 能高亮符号,终端支持时更直观
  • 如果文件编码不一致(比如一个 UTF-8 一个 GBK),diff 可能整行标为不同——先用 file file1 file2 确认编码,必要时用 iconv 统一再比
  • diff -q 只报“是否不同”,适合脚本判断,但不告诉你哪不同

vimdiff 打开后光标乱跳、不能编辑怎么办

vimdiff 不是图形工具,它是 vim -d 的别名,本质还是 vim,所有操作都依赖 vim 模式。新手常卡在“点了回车就退出”或“输字母没反应”,其实是忘了切换模式。

  • 启动后默认是普通模式(Normal mode),按 i 或 a 进入插入模式才能编辑;改完按 Esc 回到普通模式
  • 左右窗口切换用 Ctrl+w + l(右)或 h(左),不是鼠标点——鼠标在终端里通常无效
  • 同步某一块差异:把光标移到差异块内,按 do(diff obtain)从另一侧取内容,dp(diff put)把当前侧内容推过去
  • 想忽略空白差异?启动时加 -c 'set diffopt+=iwhite',或进 vim 后执行 :set diffopt+=iwhite

二进制文件、超大文件、无换行文本怎么安全比对

diff 和 vimdiff 都假设文件是文本、以行为单位处理。遇到非文本内容,要么报错,要么输出不可读的乱码结果。

  • 先用 file file.bin 确认是不是二进制;是的话,改用 cmp -l file1 file2 查第一个字节差异,或 xxd file1 | diff -u - 看十六进制对比
  • 单个文件 >500MB 且是文本?diff 可能内存爆掉或卡死。可先用 head -n 10000 / tail -n 10000 截片段比,或用 awk 'NR==FNR{a[$0]++;next}!($0 in a)' file1 file2 找独有行(要求行唯一)
  • 一行超长(比如 JSON 不换行)、无换行符的文件:diff 会当成单行处理,输出巨长 diff 块。建议先用 jq -S . file.json > file_pretty.json 格式化,再比对

如何让 diff 忽略注释、空行或特定字段

diff 本身不解析语法,所谓“忽略注释”其实是靠预处理——把要忽略的内容临时替换成统一标记,再比对。

  • 去空行和纯注释(# 或 // 开头):diff
  • 忽略某列(如日志时间戳):用 awk '{ $1=$2=""; print }' 清掉前两列再比,但要注意字段分隔符,awk -F'\t' '{ $1="" }' 更稳妥
  • Git 用户注意:git diff 支持 .gitattributes 配置 diff=javascript 等驱动,但那是 Git 层的,和系统 diff 命令无关
  • 长期高频需求建议写成小脚本封装,避免每次敲一长串管道;别硬记,用 alias diffclean='diff 容易出错,函数更可靠

真正麻烦的从来不是命令怎么敲,而是你不确定该比什么——是比原始字节、逻辑结构,还是语义等价。动手前花三十秒想清楚“我到底要确认什么”,比调半小时参数有用得多。

PHP速学视频免费教程(入门到精通)
PHP速学视频免费教程(入门到精通)

PHP怎么学习?PHP怎么入门?PHP在哪学?PHP怎么学才快?不用担心,这里为大家提供了PHP速学教程(入门到精通),有需要的小伙伴保存下载就能学习啦!

下载

相关标签:

本站声明:本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系admin@php.cn

相关专题

更多
json数据格式
json数据格式

JSON是一种轻量级的数据交换格式。本专题为大家带来json数据格式相关文章,帮助大家解决问题。

2023.08.07

2055

5

json是什么
json是什么

JSON是一种轻量级的数据交换格式,具有简洁、易读、跨平台和语言的特点,JSON数据是通过键值对的方式进行组织,其中键是字符串,值可以是字符串、数值、布尔值、数组、对象或者null,在Web开发、数据交换和配置文件等方面得到广泛应用。本专题为大家提供json相关的文章、下载、课程内容,供大家免费下载体验。

2023.08.23

3062

1

jquery怎么操作json
jquery怎么操作json

操作的方法有:1、“$.parseJSON(jsonString)”2、“$.getJSON(url, data, success)”;3、“$.each(obj, callback)”;4、“$.ajax()”。更多jquery怎么操作json的详细内容,可以访问本专题下面的文章。

2023.10.13

1036

3

go语言处理json数据方法
go语言处理json数据方法

本专题整合了go语言中处理json数据方法,阅读专题下面的文章了解更多详细内容。

2025.09.10

3459

7

python中print函数的用法
python中print函数的用法

python中print函数的语法是“print(value1, value2, ..., sep=' ', end='\n', file=sys.stdout, flush=False)”。本专题为大家提供print相关的文章、下载、课程内容,供大家免费下载体验。

2023.09.27

2700

5

python print用法与作用
python print用法与作用

本专题整合了python print的用法、作用、函数功能相关内容,阅读专题下面的文章了解更多详细教程。

2026.02.03

249

24

format在python中的用法
format在python中的用法

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

2023.07.31

1689

3

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

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

2024.06.27

1211

7

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

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

2023.07.05

5919

9

热门下载

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

精品课程

更多
热门推荐
/
最新课程
phpStudy极速入门视频教程
phpStudy极速入门视频教程

共6课时 | 54.6万人学习

独孤九贱(4)_PHP视频教程
独孤九贱(4)_PHP视频教程

共89课时 | 133.4万人学习