Was macht -u von diff wirklich?

8

Sieht so aus -u, als könnte ein zusätzliches Zahlenargument verwendet werden, aber ich bekomme das Handbuch nicht leise,

Es sagt,

  -u, -U NUM, --unified[=NUM]
          output NUM (default 3) lines of unified context

Jemand nennt bitte ein Beispiel?

Ich konnte keinen funktionierenden finden.

Gänseblümchen
quelle

Antworten:

10

-u selbst gibt Ergebnisse im "einheitlichen" Format aus. Die Anzahl ändert nur die Anzahl der benachbarten Zeilen, die als Kontext enthalten sind.

Bratchley
quelle
4

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 -Ukann 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.

slm
quelle
2
Ich denke, die Hauptfrage des OP betraf nicht das Dienstprogramm diff selbst, sondern die Verwendung der Zahl neben -u in seiner Version von diff.
Bratchley
Danke @JoelDavis, ich habe die Wortnummer in seiner Frage verpasst. Ich werde aktualisieren, um auch meine Antwort zu erwähnen.
slm