bdiff(1) bdiff(1)
NAME
bdiff - Große Dateien vergleichen (big diff)
SYNTAX
bdiff datei1 datei2 [n] [-s]
BESCHREIBUNG
bdiff vergleicht zwei Dateien wie diff(1), kann jedoch Dateien ver-
gleichen, die für diff zu groß sind.
bdiff gibt (genau wie diff) aus:
- die Zeilen, in denen sich die angegebenen Dateien unterscheiden,
- ed-Kommandos, mit denen man aus datei1 datei2 erzeugen kann [siehe
ed(1)].
OPTIONEN
Die Reihenfolge der Argumente und Optionen ist nicht beliebig!
datei1 datei2
datei1 und datei2 sind die Namen der Dateien, die Sie vergleichen
wollen. Wenn Sie statt eines Dateinamens das Zeichen - angeben,
dann liest bdiff von der Standardeingabe.
n Mit n können sie bestimmen, wieviele Zeilen die Abschnitte haben
sollen, in die bdiff die Dateien aufteilt.
n ist eine ganze Zahl größer als 0.
n nicht angegeben: n = 3500
-s Fehlermeldungen von bdiff werden teilweise unterdrückt. Fehler-
meldungen von diff werden jedoch nicht unterdrückt. Diese Option
wird vorwiegend in Shell-Prozeduren verwendet.
Vorsicht:
Wenn Sie sowohl einen Wert für n als auch die Option -s angeben,
dann müssen Sie die richtige Reihenfolge beachten: n muß vor -s
stehen!
Arbeitsweise
Zeilen am Anfang der Dateien, die sich nicht unterscheiden, ignoriert
bdiff. Ab der ersten unterschiedlichen Zeile teilt bdiff die angegebe-
nen Dateien in Abschnitte zu n Zeilen auf. Der Standard-Wert für n ist
3500, kann aber beim Aufruf von bdiff geändert werden (siehe Parameter
n). bdiff ruft diff auf. diff vergleicht dann die Abschnitte der
Dateien. Sie müssen deshalb den Wert für n so wählen, daß diff keine
Schwierigkeiten hat, Abschnitte mit n Zeilen zu vergleichen.
Seite 1 Reliant UNIX 5.44 Gedruckt 11/98
bdiff(1) bdiff(1)
bdiff kann nur die Unterschiede zwischen sich entsprechenden Abschnit-
ten in den beiden Dateien feststellen. bdiff vergleicht also z. B.
nicht den 4. Abschnitt in datei1 mit dem 5. Abschnitt in datei2. Des-
halb gibt bdiff die Unterschiede oft umständlicher an, als man es sich
wünschen würde.
Die Zeilennumerierung ist trotz der Aufteilung in Abschnitte von
Dateianfang bis -ende durchlaufend, d. h., es sieht so aus, als seien
die Dateien als Ganzes verarbeitet worden.
BEISPIELE
Das Beispiel soll zeigen, wie sich die Aufteilung in Abschnitte aus-
wirkt. Dazu muß zunächst eine Datei abc1 mit 26 Zeilen angelegt wer-
den. Fortlaufend steht in jeder dieser Zeilen in Spalte 1 ein Klein-
buchstabe des Alphabets; in Zeile 1 steht a, in Zeile 26 steht z.
Diese Datei wird in die Datei abc2 kopiert, und vor die erste Zeile
der Datei abc2 wird eine Zeile mit der Ziffer 0 in der ersten Spalte
eingefügt. Der Vergleich beider Dateien erfolgt in Abschnitten von 5
Zeilen:
$ bdiff abc1 abc2 5
0a1
> 0
5d5
< e
5a6
> e
10d10
< j
10a11
> j
15d15
< o
15a16
> o
20d20
< t
20a21
> t
25d25
< y
25a26
> y
Zunächst werden die ersten 5 Zeilen beider Dateien verglichen. Damit
die ersten 5 Zeilen der Datei abc1 mit den ersten 5 Zeilen der Datei
abc2 übereinstimmen, muß folgendes geschehen:
- Vor die erste Zeile von abc1 muß die erste Zeile (Ziffer 0) von
abc2 eingefügt werden. bdiff gibt das ed-Kommando aus, mit dem Sie
dies tun können: 0a1.
Seite 2 Reliant UNIX 5.44 Gedruckt 11/98
bdiff(1) bdiff(1)
(Tatsächlich fügt dieses ed-Kommando Zeile 1 aus abc2 hinter Zeile
0 von abc1 ein.)
- Die fünfte Zeile von abc1 enthält den Buchstaben e und muß gelöscht
werden, weil abc2 innerhalb der ersten 5 Zeilen keine Zeile mit dem
Buchstaben e enthält: 5d5.
Danach werden die Zeilen 6 - 10 beider Dateien verglichen. Vor Zeile 6
(Buchstabe f) von abc1 muß Zeile 6 (Buchstabe e) von abc2 eingefügt
werden; Zeile 10 von abc1 muß gelöscht werden. Damit sind beide
Abschnitte gleich.
Weil bdiff abschnittsweise vergleicht, ist die Ausgabe von bdiff
umständlicher als die Ausgabe von diff. Denn es hätte ja genügt, nur
die erste Zeile von abc2 vor die erste Zeile von abc1 einzufügen.
SIEHE AUCH
cmp(1), comm(1), diff(1), diff3(1), ed(1).
Seite 3 Reliant UNIX 5.44 Gedruckt 11/98