Direkt aus dem Wikipedia-Artikel über diff
:
Unified Context Diffs wurden ursprünglich von Wayne Davison im August 1990 entwickelt (in Unidiff, das in Band 14 von comp.sources.misc erschien). Richard Stallman fügte dem Diff-Dienstprogramm des GNU-Projekts einen Monat später eine einheitliche Diff-Unterstützung hinzu, und die Funktion wurde in GNU diff 1.15, veröffentlicht im Januar 1991, veröffentlicht. GNU diff hat seitdem das Kontextformat verallgemeinert, um eine beliebige Formatierung von Diffs zu ermöglichen.
Das Format beginnt mit demselben zweizeiligen Header wie das Kontextformat, außer dass der Originaldatei "---" und der neuen Datei "+++" vorangestellt sind. Darauf folgen ein oder mehrere Änderungsblöcke, die die Zeilenunterschiede in der Datei enthalten. Vor den unveränderten kontextbezogenen Zeilen steht ein Leerzeichen, vor den Additionszeilen steht ein Pluszeichen und vor den Löschzeilen steht ein Minuszeichen.
Ein Stück beginnt mit Bereichsinformationen und wird sofort von den Zeilenergänzungen, Zeilenlöschungen und einer beliebigen Anzahl von Kontextzeilen gefolgt. Die Bereichsinformationen sind von Doppelzeichen umgeben und werden in einer einzelnen Zeile zusammengefasst, die im Kontextformat (oben) in zwei Zeilen angezeigt wird. Das Format der Bereichsinformationszeile lautet wie folgt:
@@ -l,s +l,s @@ optional section heading
In der gesamten Datei, in der Änderungen vorgenommen werden müssen, werden folgende Zeilen angezeigt:
-check this dokument. On
+check this document. On
HINWEIS: A -
bedeutet, dass es entfernt wird, und A +
bedeutet, dass es hinzugefügt wird.
Der Befehl diff -U
kann auch einen zusätzlichen Parameter verwenden, eine Zahl, die angibt, wie viele Zeilen benachbarten Textes um den Punkt herum vorhanden sind, an dem der Unterschied zwischen den beiden Dateien auftritt. Dies ist hilfreich, um einen besseren Kontext für die tatsächlichen Unterschiede zu erhalten.
Beispiel
Datei1
$ cat file1.txt
The Rain in Spain by
Servants Poor Professor Higgins!
Poor Professor Higgins! Night and day
He slaves away! Oh, poor Professor Higgins!
All day long On his feet; Up and down until he's numb;
Doesn't rest; Doesn't eat;
file2
$ cat file2.txt
The Rain in Spain by
added extra line here
Servants Poor Professor Higgins!
Poor Professor Higgins! Night and day
He slaves away! Oh, poor Professor Higgins!
All day long On his feat; Up and down untile he's numb;
Doesn't rest; Doesn't eat;
diff
$ diff -U 2 file1.txt file2.txt
--- file1.txt 2013-04-26 09:39:13.496835363 -0400
+++ file2.txt 2013-04-26 09:38:04.838299195 -0400
@@ -1,6 +1,7 @@
The Rain in Spain by
+added extra line here
Servants Poor Professor Higgins!
Poor Professor Higgins! Night and day
He slaves away! Oh, poor Professor Higgins!
-All day long On his feet; Up and down until he's numb;
+All day long On his feat; Up and down untile he's numb;
Doesn't rest; Doesn't eat;
Siehe diff auf Wikipedia für weitere Details.