插件窝 干货文章 Linux下比较两个文本文件的简便方法

Linux下比较两个文本文件的简便方法

file txt 文件 bash 871    来源:    2025-04-08

在Linux系统中,有多种简便方法可以比较两个文本文件的内容差异。以下是几种常用的方案:

1. diff命令(最经典)

diff file1.txt file2.txt
  • 输出说明:< 表示第一个文件内容,> 表示第二个文件内容
  • 推荐参数: bash diff -u file1.txt file2.txt # 统一差异格式输出 diff -y file1.txt file2.txt # 并排对比 diff -i file1.txt file2.txt # 忽略大小写

2. vimdiff(可视化对比)

vimdiff file1.txt file2.txt

vim -d file1.txt file2.txt
  • 特点:彩色高亮显示差异,支持实时编辑
  • 基本操作:
    • ]c:跳转到下一个差异点
    • [c:跳转到上一个差异点
    • do:将对方改动应用到当前文件
    • dp:将当前改动应用到对方文件

3. colordiff(彩色输出)

colordiff file1.txt file2.txt
  • 需要先安装:sudo apt install colordiff(Debian/Ubuntu)

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

comm file1.txt file2.txt
  • 输出三列:
    • 第1列:只在file1.txt存在的内容
    • 第2列:只在file2.txt存在的内容
    • 第3列:两个文件共有的内容
  • 常用参数: bash comm -12 file1.txt file2.txt # 只显示共同内容 comm -23 file1.txt file2.txt # 只显示file1独有的内容

5. sdiff(并排对比)

sdiff -w 120 file1.txt file2.txt
  • -w参数指定输出宽度(字符数)
  • 输出标记:
    • |:有差异的行
    • <:只在左边文件存在的行
    • >:只在右边文件存在的行

6. cmp(二进制比较)

cmp file1.txt file2.txt
  • 只报告第一个差异的位置,适合大文件快速检查

7. md5sum(校验和比较)

md5sum file1.txt file2.txt
  • 适用于快速确认文件是否完全相同

实用技巧:

  1. 忽略空格差异:

    diff -w file1.txt file2.txt  # 忽略所有空白
    diff -b file1.txt file2.txt  # 忽略空白数量的变化
    
  2. 比较目录中的所有文件:

    diff -r dir1/ dir2/
    
  3. 生成补丁文件:

    diff -u old.txt new.txt > patch.txt
    
  4. 使用meld图形化工具:

    meld file1.txt file2.txt
    

    (需要先安装:sudo apt install meld

选择建议: - 需要详细差异分析 → 使用diff -uvimdiff - 快速检查是否相同 → 使用cmpmd5sum - 需要并排查看 → 使用sdiff -ymeld - 处理已排序文件 → 使用comm

每种工具各有优势,可根据具体需求选择最适合的比较方式。