标准(旧)输出格式将显示文件之间的差异,而不会在文件周围带有区域差异的文本周围显示。
例如:(1d0 <
删除)表示需要从的第一行中删除苹果file1
,而2a2 >
(追加)表示需要将苹果添加到file2
在第二行中,因此两个文件都可以匹配。
可用的文档info diff
进一步解释了它:
在没有上下文的情况下显示差异
“正常” diff
输出格式显示了每个差异,没有任何周围的上下文。有时,这样的输出是查看行的变化的最清晰方法,而不会造成附近不变的行的混乱(尽管您可以通过使用0行上下文获得与上下文相似的结果或统一格式)。但是,这种格式已不再广泛用于发送补丁。为此,上下文格式和统一格式是更好的。缺省格式是标准格式,以与diff
POSIX标准的较早版本兼容。使用该--normal
选项可以显式选择此输出格式。
普通格式的详细说明
普通输出格式由一个或多个大块差异组成;每个块显示一个文件不同的区域。普通格式的块看起来像这样:
CHANGE-COMMAND
< FROM-FILE-LINE
< FROM-FILE-LINE...
---
> TO-FILE-LINE
> TO-FILE-LINE...
更改命令有三种类型。每个文件都由第一个文件中的行号或以逗号分隔的范围,单个字符(指示要进行的更改的种类)以及第二个文件中的行号或以逗号分隔的范围组成。所有行号都是每个文件中的原始行号。更改命令的类型为:
LaR
在第一个文件的第L行之后,在第二个文件的范围R中添加行。例如,8a12,15
意味着在文件1的第8行之后追加文件2的第12-15行;或者,如果将文件2更改为文件1,则删除文件2的第12-15行。
FcT
用第二个文件的范围T中的行替换第一个文件的范围F中的行。这就像组合的添加和删除,但更为紧凑。例如,5,7c8,10
意味着将文件1的第5-7行更改为文件2的第8-10行;或者,如果将文件2更改为文件1,则将文件2的第8-10行更改为文件1的第5-7行。
RdL
从第一个文件中删除范围R中的行;如果没有删除它们,L行将显示在第二个文件中。例如,5,7d3
表示删除文件1的第5-7行;或者,如果将文件2更改为文件1,则在文件2的第3行之后附加文件1的第5-7行。
也可以看看:
因此,要查看橙子,您必须并排或使用统一上下文对其进行比较。
例如:
$ diff -y file1 file2
apples <
oranges oranges
> apples
$ diff -u file1 file2
@@ -1,2 +1,2 @@
-apples
oranges
+apples
oranges
是两个文件之间最大的共同部分,所以您获得的是表达两者之间差异的最短方法。