diff3(1) diff3(1)
NAME
diff3 - Drei Dateien zeilenweise vergleichen (differential)
SYNTAX
diff3 [option ...] datei1 datei2 datei3
BESCHREIBUNG
diff3 vergleicht drei Dateien und schreibt auf die Standardausgabe, in
welchen Zeilenbereichen sich die Dateien unterscheiden und wie sie
ineinander überführt werden können.
OPTIONEN
Keine Option angegeben:
Für nicht übereinstimmende Zeilenbereiche gibt diff3 eine der
folgenden Zeichenketten aus:
==== alle 3 Dateien unterscheiden sich
====1 datei1 unterscheidet sich von datei2 und datei3
====2 datei2 unterscheidet sich von datei1 und datei3
====3 datei3 unterscheidet sich von datei1 und datei2
Unter dieser Angabe stehen jeweils die Änderungen, die nötig
wären, um einen bestimmten Zeilenbereich einer Datei einem
bestimmten Zeilenbereich einer anderen Datei anzugleichen. Diese
Änderungen werden in einem der zwei folgenden Formate ausgegeben:
Text ändern:
i:n1[,n2]c
[text]
Um die Unterschiede zu beseitigen, muß in datei i (i = 1, 2, 3)
die Zeile n1 bzw. der Zeilenbereich n1 bis n2 geändert werden (c
- change). text ist der zu ändernde Zeilenbereich. Unterscheiden
sich zwei Dateien in dem betreffenden Zeilenbereich nicht, wird
text für die Datei mit der niedrigeren Nummer i nicht ausgegeben.
Text anfügen:
i:na
[text]
Um die Unterschiede zu beseitigen, muß in datei i (i = 1, 2, 3)
nach Zeile n Text angefügt werden (a - append). text ist der
anzufügende Zeilenbereich. Unterscheiden sich zwei Dateien in dem
betreffenden Zeilenbereich nicht, wird text für die Datei mit der
niedrigeren Nummer i nicht ausgegeben.
Seite 1 Reliant UNIX 5.44 Gedruckt 11/98
diff3(1) diff3(1)
-e diff3 gibt ein ed-Skript aus, das in datei1 alle Unterschiede
zwischen datei2 und datei3 einarbeitet, die ohne Angabe einer
Option mit ==== oder ====3 gekennzeichnet würden [siehe ed(1)].
Vorsicht:
Bei Textzeilen, die nur aus einem einzelnen Punkt "." beste-
hen, wird die Option -e ignoriert.
Beispiele:
Inhalt von datei1 datei2 datei3
aber doch aber
morgen heute heute
Der Aufruf von diff3 -e erzeugt folgende Ausgabe:
$ diff3 -e datei1 datei2 datei3
1,2c
aber
heute
.
w
q
Inhalt von datei1 datei2 datei3
aber aber aber
heute heute
morgen
Der Aufruf von diff3 -e erzeugt folgende Ausgabe:
$ diff3 -e datei1 datei2 datei3
1a
heute
morgen
.
w
q
-E diff3 gibt ein ed-Skript aus, das in datei1 alle Unterschiede
zwischen datei2 und datei3 einarbeitet, die ohne Angabe einer
Option mit ==== oder ====3 gekennzeichnet würden [siehe ed(1)].
Dabei erzeugt diff3 für die Unterschiede, die ohne Angabe einer
Option mit ==== gekennzeichnet würden, eine erweiterte Ausgabe im
ed-Skript. Diese Unterschiede werden entsprechend der Datei, aus
der sie kommen, in Zeilen mit <<<<<< oder >>>>>> eingeschlossen.
Seite 2 Reliant UNIX 5.44 Gedruckt 11/98
diff3(1) diff3(1)
-x diff3 gibt ein ed-Skript aus, das in datei1 alle Unterschiede
zwischen datei2 und datei3 einarbeitet, die ohne Angabe einer
Option mit ==== gekennzeichnet würden [siehe ed(1)].
-X diff3 gibt ein erweitertes ed-Skript aus, das in datei1 alle
Unterschiede zwischen datei2 und datei3 einarbeitet, die ohne
Angabe einer Option mit ==== gekennzeichnet würden [siehe ed(1)].
Dabei werden diese Unterschiede entsprechend der Datei, aus der
sie kommen, in Zeilen mit <<<<<< oder >>>>>> eingeschlossen.
-3 diff3 gibt ein ed-Skript aus, das in datei1 alle Unterschiede
zwischen datei2 und datei3 einarbeitet, die ohne Angabe einer
Option mit ====3 gekennzeichnet würden [siehe ed(1)].
datei1 datei2 datei3
Namen der drei Dateien, die Sie vergleichen möchten.
diff3 verarbeitet maximal 200 Unterschiede zwischen den drei
Dateien.
INTERNATIONALE UMGEBUNG
Die Umgebungsvariable LCMESSAGES bestimmt die Sprache der Meldungs-
texte. Wenn LCMESSAGES nicht oder als leere Zeichenkette definiert
ist, wird der Wert von LANG als Standardwert herangezogen. Ist auch
LANG nicht oder als leere Zeichenkette definiert, verhält sich das
System so, als wäre es nicht internationalisiert.
Die Umgebungsvariable LCALL bestimmt die gesamte internationale Umge-
bung. LCALL hat Vorrang vor allen anderen Umgebungsvariablen im
Bereich der Internationalisierung.
BEISPIELE
Sie haben drei Versionen adr1, adr2, adr3 einer Adressendatei mit fol-
gendem Inhalt:
Inhalt von adr1: Inhalt von adr2: Inhalt von adr3:
Herr Witzig Herr Witzig Herr Witzig
Lachstr. 00 Lachstr. 00 Lachstr. 00
0000 Kicherlingen 00 0000 Kicherlingen 00 0000 Kicherlingen 00
Tel.: 000 000 Tel.: 000 000 Tel.: 000 000
Herr Traurig Herr Traurig Herr Traurig
Traenenstr. 77 Traenenstr. 77 Traenenstr. 77
7777 Weinhausen 77 7777 Weinhausen 77 7777 Weinhausen 77
Tel.: 777 777 Tel.: 444 444 Tel.: 444 444
Seite 3 Reliant UNIX 5.44 Gedruckt 11/98
diff3(1) diff3(1)
Herr Gruebel
Runzelgasse 33
3333 Faltenberg 33
Tel.: 333 333
Beispiel 1
Aufruf von diff3 ohne Option:
$ diff3 adr1 adr2 adr3
====
1:9c
Tel.: 777 777
2:9c
Tel.: 444 444
3:9,14c
Tel.: 444 444
Herr Gruebel
Runzelgasse 33
3333 Faltenberg 33
Tel.: 333 333
Beispiel 2
Aufruf von diff3 mit Option -e:
$ diff3 -e adr1 adr2 adr3
9c
Tel.: 444 444
Herr Gruebel
Runzelgasse 33
3333 Faltenberg 33
Tel.: 333 333
.
w
q
Wenn Sie die Ausgabe von diff3 -e in eine Datei script umlenken, kön-
nen Sie mit der folgenden Kommandozeile die Änderungen in adr1 einar-
beiten:
$ (cat script; echo '1,$p') | ed - adr1
Beispiel 3
Aufruf von diff3 mit Option -3:
$ diff3 -3 adr1 adr2 adr3
Seite 4 Reliant UNIX 5.44 Gedruckt 11/98
diff3(1) diff3(1)
Dieser Aufruf erzeugt keine Ausgabe, da adr1 und adr2 verschieden
sind. diff3 -3 gibt nur dann ein ed-Skript aus, wenn es Unterschiede
der Art ====3 gibt; in diesem Beispiel gibt es aber nur Unterschiede
der Art ====.
DATEIEN
/tmp/d3a*
Datei, die diff anlegt. Sie enthält die Unterschiede zwischen
datei1 und datei3. diff wird von diff3 aufgerufen.
/tmp/d3b*
Datei, die diff anlegt. Sie enthält die Unterschiede zwischen
datei2 und datei3.
/usr/lib/diff3prog
Programm, das die Dateien /tmp/d3a* und /tmp/d3b* vergleicht.
diff3 ruft dieses Programm auf.
SIEHE AUCH
diff(1), ed(1).
Seite 5 Reliant UNIX 5.44 Gedruckt 11/98