插件窝 干货文章 linux怎么比较两个文本文件

linux怎么比较两个文本文件

file txt 文件 bash 783    来源:    2025-04-13

在Linux中比较两个文本文件有多种方法,以下是常用的几种工具和命令:


1. diff 命令(最常用)

显示两个文件的行级差异:

diff file1.txt file2.txt
  • 输出说明
    • a = 添加 (add)
    • d = 删除 (delete)
    • c = 修改 (change)
    • < 表示第一个文件的内容,> 表示第二个文件的内容。

常用选项: - -u--unified:输出更易读的统一格式(常用于补丁文件): bash diff -u file1.txt file2.txt - -y:并排显示差异(需配合 -W 指定宽度): bash diff -y -W 60 file1.txt file2.txt - -i:忽略大小写差异。


2. vimdiff 命令(可视化对比)

用Vim的差异模式高亮显示差异:

vimdiff file1.txt file2.txt

或:

vim -d file1.txt file2.txt

操作提示: - 使用 :qa 退出所有文件。 - 快捷键:]c 跳转到下一个差异点,[c 跳转到上一个差异点。


3. colordiff 命令(彩色输出)

需要先安装(Ubuntu/Debian):

sudo apt install colordiff

使用方式同 diff,但输出带颜色:

colordiff file1.txt file2.txt

4. comm 命令(比较排序后的文件)

显示两个已排序文件的共同行或独有行:

comm file1.txt file2.txt
  • 输出三列
    1. file1.txt 有的行
    2. file2.txt 有的行
    3. 两个文件共有的行

常用选项: - -1:隐藏第一列(不显示仅file1有的行) - -2:隐藏第二列 - -3:隐藏第三列


5. cmp 命令(二进制或快速比较)

比较文件是否完全相同(不显示具体差异,仅反馈第一个不同点):

cmp file1.txt file2.txt
  • 如果文件完全相同,无输出;不同时显示第一个差异的字节位置。

6. sdiff 命令(并排合并差异)

类似 diff -y,但会尝试合并显示:

sdiff file1.txt file2.txt
  • 输出中 | 表示有差异的行,<> 分别对应两个文件的内容。

7. 图形化工具(如 meld

安装:

sudo apt install meld  # Ubuntu/Debian

使用:

meld file1.txt file2.txt
  • 支持文件夹对比和编辑同步。

实际场景示例:

忽略空白差异:

diff -w file1.txt file2.txt  # 忽略空格和制表符

生成补丁文件:

diff -u old.txt new.txt > patch.diff

仅显示是否不同(静默模式):

diff -q file1.txt file2.txt

根据需求选择合适的方法,diffvimdiff 是最常用的工具。