diff命令--输出格式解读
diff命令–输出格式解读
建立两个文件:file1.c vs file2.c
第一个文件file1.c
第二个文件file2.cmeld file1.c file2.c
diff命令解析
由于历史原因,diff有三种格式:
- 普通格式(normal diff)
- 上下文格式(context diff),需要加-c选项
- 合并格式(unified diff),需要加-u选项
下文中统一使用colordiff,其实和diff命令相同,只不过加了颜色。
普通格式(normal diff)
colordiff file1.c file2.c
变动的模式c
表示内容改变(change)a
表示内容增加(addition)d
表示内容删除(deletion)<
文件的不同,仅在第一个文件(file1.c)中包含该行>
文件的不同,仅在第二个文件(file2.c)中包含该行
上下文格式(context diff)
colordiff file1.c file2.c -c
***
表示第一个文件 第一个文件修改时间---
表示第二个文件 第二个文件修改时间-
第一个文件中的“已删除”行与第二个文件中的任何内容都不对应。即,第一个文件中有该行,第二个文件中没有。+
第二个文件中的“插入”行与第一个文件中的任何内容都不对应。即,第二个文件中有该行,第一个文件中没有。!
表示两个文件都有的行,被修改过,在两个文件上都有该符号,来作为标记修改行
合并格式(unified diff)
colordiff file1.c file2.c -u
---
表示第一个文件 第一个文件修改时间+++
表示第二个文件 第二个文件修改时间-
表示仅在第一个文件中有该行+
表示仅在第二个文件中有该行@@
标记行号的一行,无实际意义
并排格式(Side by Side Format)
colordiff file1.c file2.c -y -W 72
-y
输出两列-w
控制输出宽度,72字符
若加’–suppress-common-lines’表示不显示两个相同的行。colordiff file1.c file2.c -y -W 72 --suppress-common-lines
>
仅右边第二个文件有该行,左边没有<
仅左边第一个文件有该行,右边没有|
两个文件都有该行,只是被修改了,符号两侧是对比。
这些符号都在中间显示。
参考:
Comparing and Merging Files
diff命令输出格式解读 - 车子(chezi)
读懂diff - 阮一峰的网络日志