在Linux中比较两个文本文件有多种方法,以下是常用的几种工具和命令:
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:忽略大小写差异。
vimdiff 命令(可视化对比)用Vim的差异模式高亮显示差异:
vimdiff file1.txt file2.txt
或:
vim -d file1.txt file2.txt
操作提示:
- 使用 :qa 退出所有文件。
- 快捷键:]c 跳转到下一个差异点,[c 跳转到上一个差异点。
colordiff 命令(彩色输出)需要先安装(Ubuntu/Debian):
sudo apt install colordiff
使用方式同 diff,但输出带颜色:
colordiff file1.txt file2.txt
comm 命令(比较排序后的文件)显示两个已排序文件的共同行或独有行:
comm file1.txt file2.txt
file1.txt 有的行file2.txt 有的行常用选项:
- -1:隐藏第一列(不显示仅file1有的行)
- -2:隐藏第二列
- -3:隐藏第三列
cmp 命令(二进制或快速比较)比较文件是否完全相同(不显示具体差异,仅反馈第一个不同点):
cmp file1.txt file2.txt
sdiff 命令(并排合并差异)类似 diff -y,但会尝试合并显示:
sdiff file1.txt file2.txt
| 表示有差异的行,< 和 > 分别对应两个文件的内容。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
根据需求选择合适的方法,diff 和 vimdiff 是最常用的工具。