在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
是最常用的工具。