Home · Kontakt · Impressum
contents index previous up next
Next: 7.7.8 patch Up: 7.7 Suchen und Ersetzen Previous: 7.7.6 sed

Unterabschnitte



7.7.7 diff

Das Kommando diff vergleicht zwei Textdateien miteinander. Als Ergebnis wird eine Liste aller Zeilen ausgegeben, die voneinander abweichen. Dabei erkennt das Programm auch eingefügte Zeilen und arbeitet danach reibungslos weiter. Im Gegensatz zu comm (siehe 7.5.2) kann diff auch auf unsortierte Dateien angewendet werden. Der Befehl wird hauptsächlich dazu verwendet die Abweichungen zwischen zwei Versionen eines Programmlistings rasch zu dokumentieren.
diff [OPTIONEN] DATEI1 DATEI2

Optionen
-b Betrachtet mehrfache Leerzeichen und Leerzeilen als einfache Leerzeichen bzw. Leerzeilen
-c Ausgabe als 'Context Diffs'
-e Ausgabe als Skript für den Befehl ed
-r Vergleicht den Inhalt zweier Verzeichnisbäume
-u Ausgabe als 'Unified Diffs'
-w Ignoriert Leerzeichen und Leerzeilen ganz
 

Die Ausgabe von diff besteht aus sogenannten 'hunks', was man frei als 'Stücke' übersetzen kann. Ein Hunk besteht aus bis zu vier Teilen: einer Informationszeile, dem alten Text, einer Trennzeile und dem neuen Text. Beim Einfügen und Löschen von Zeilen fehlt die alte oder neue Textinformation und die dann überflüssige Trennzeile fällt auch weg.

In der Informationszeile steht, an welcher Stelle in der jeweiligen Datei die Änderung stattgefunden hat und welche Operationen nötig sind um die erste Eingabedatei DATEI1 in die zweite Eingabedatei DATEI2 zu verwandeln. Dabei stehen die Buchstaben 'a', 'c' und 'd' für 'add' (Zeilen hinzufügen), 'change' (Zeilen verändern) und 'delete' (Zeilen löschen). Die Zahlen bzw. Zahlenbereiche links und rechts von den Buchstaben geben die betroffenen Zeilen an.

Alle Hunks zusammengenommen bilden den Patch, der die erste Datei in die zweite Datei verwandelt. Es geht auch umgekehrt, da Patches dieser Art symmetrisch sind und rückwärts angewendet werden können (`reverse patching´);

7.7.7.0.1 Beispiel

 
Um zwei Perlscripte miteinander zu vergleichen, ohne mehrfache Leerzeichen zu berücksichtigen, gibt man das folgende Kommando ein.
 diff -b div.pl.old div.pl

Soll die Ausgabe für den Editor ed verarbeitbar sein, dann muß das Kommando lauten:

 diff -be div.pl.old div.pl

Die Anwendung von diff fürs Patchen von Programmen beschreibt der Abschnitt 7.7.9.


contents index previous up next
Next: 7.7.8 patch Up: 7.7 Suchen und Ersetzen Previous: 7.7.6 sed
  © 2004 by IT-Dozent Ole Vanhoefer · Zum Seitenanfang