ed(1) ed(1)
NAME
ed - Zeilenorientierter Editor im Dialogbetrieb
SYNTAX
ed [-s] [-p zeichenkette] [-x] [-C] [--] [datei]
BESCHREIBUNG
ed ist ein interaktiver zeilenorientierter Editor. Mit Hilfe von ed-
Skripts (siehe ARBEITEN MIT ED-SKRIPTS) können Sie bequem mehrere
Dateien mit derselben Kommandofolge bearbeiten. ed verarbeitet die
Ausgabe des Kommandos diff -e [siehe diff(1)].
OPTIONEN
-s Die Option -s unterdrückt die folgenden standardmäßigen Ausgaben:
- Anzahl der verarbeiteten Zeichen bei den ed-Kommandos
e (edit - editieren)
r (read - lesen)
w (write - schreiben)
- Fragezeichen ?, das vor versehentlichem Löschen des Pufferin-
halts warnt, bei den ed-Kommandos
e (edit - editieren)
q (quit - verlassen)
- Ausrufezeichen ! als Bereitzeichen von ed nach einem !-Kom-
mando.
Die Option -s entspricht der alten Option -, die weiterhin unter-
stützt wird.
-p zeichenkette
Mit zeichenkette können Sie die Bereitzeichenkette definieren,
die ed im Kommandomodus ausgibt. Für zeichenkette können Sie ein
oder mehrere Zeichen angeben.
-p zeichenkette nicht angegeben:
ed gibt keine Bereitzeichenkette aus.
-x Verschlüsselungsoption: ed führt beim Aufruf das ed-Kommando X
aus und fragt Sie nach einem Schlüssel. Dieser Schlüssel wird
dann zum Textent- und Textverschlüsseln gemäß dem Algorithmus des
Kommandos crypt verwendet. ed klärt ab, ob der einzulesende Text
verschlüsselt ist oder nicht. Die temporäre Pufferdatei wird
ebenfalls mit einer Transformation des eingegebenen Schlüssels
verschlüsselt [siehe crypt(1)].
Seite 1 Reliant UNIX 5.44 Gedruckt 11/98
ed(1) ed(1)
-C Verschlüsselungsoption: wie -x, nur daß ed das ed-Kommando C aus-
führt. Das Kommando C entspricht dem Kommando X mit dem Unter-
schied: es wird angenommen, daß jeder zu lesende Text verschlüs-
selt ist [siehe crypt(1)].
-- Ende der Optionenliste. Die Angabe ist nötig, wenn datei mit -
beginnt.
datei
Name der Datei, die Sie bearbeiten möchten. ed kopiert die Datei
in den internen Puffer und speichert datei als aktuellen Dateina-
men.
datei nicht angegeben:
Sie beginnen in einem leeren Puffer zu arbeiten und bestimmen
erst beim Schreiben des Pufferinhalts mit dem Kommando w datei
(write - schreiben) in eine Datei deren Namen.
ED-PUFFER
Beim Aufruf von ed wird ein Puffer eröffnet.
Wenn Sie keine Datei angegeben haben, ist der Puffer leer. Sie füllen
ihn während Ihrer Editorsitzung mit Text.
Wenn Sie eine Datei angegeben haben, wird eine Kopie dieser Datei in
den Puffer eingelesen. Den Text im Puffer bearbeiten Sie während Ihrer
Editorsitzung.
Bevor Sie den Editor wieder verlassen, müssen Sie entscheiden, ob Sie
den neu erstellten oder geänderten Pufferinhalt sichern, d. h. in eine
Datei schreiben möchten.
Möchten Sie den Pufferinhalt sichern, schreiben Sie den Pufferinhalt
mit dem Kommando w [datei] (write - schreiben) in die angegebene Datei
(Standard: die beim Aufruf von ed angegebene) zurück und verlassen
dann den Editor mit einem der Kommandos q (quit - verlassen), Q (Quit
- verlassen) oder mit der Taste <CTRL-D>.
Möchten Sie den Pufferinhalt nicht sichern, können Sie mit Q oder
zweimal q den Editor verlassen, ohne vorher den Pufferinhalt mit w
zurückzuschreiben. Nach der ersten Eingabe von q gibt ed als Warnung
vor versehentlichem Löschen des Pufferinhalts ein ? aus. Gelöscht wird
der Pufferinhalt erst, wenn Sie dann ein zweites Mal q eingeben. Statt
des zweiten q können Sie auch Q oder <CTRL-D> eingeben.
Seite 2 Reliant UNIX 5.44 Gedruckt 11/98
ed(1) ed(1)
ARBEITSMODI
Der ed bietet Ihnen zwei Arbeitsmodi: den Kommandomodus und den Einga-
bemodus. Nach dem Aufruf mit ed [datei] <RETURN> befindet sich ed im
Kommandomodus. Im Kommandomodus geben Sie im allgemeinen ein Kommando
in einer Zeile an und schließen es mit der Taste <RETURN> ab.
Den Eingabemodus schalten Sie ein mit einem der Kommandos
a (append - anfügen)
i (insert - einfügen)
c (change - verändern)
(siehe unten, KOMMANDOS).
Im Eingabemodus werden alle folgenden Eingabezeichen, auch nicht-
druckbare Zeichen (wie z. B. die Tastencodes der Schreibmarkentasten),
in die Arbeitskopie im Puffer geschrieben. Im Eingabemodus erkennt ed
keine Kommandos. Sie können für den Kommandomodus ein Bereitzeichen
definieren (siehe Option -p und ed-Kommando P) und erkennen dann
sofort, in welchem Modus Sie gerade arbeiten. Verlassen können Sie den
Eingabemodus mit einem Punkt in der ersten Spalte . <RETURN> oder mit
der Taste <DEL>. Die Taste <DEL> bewirkt generell, daß ed alle Einga-
ben seit dem letzten <RETURN> ignoriert und ein ? als Warnung ausgibt.
KOMMANDOSTRUKTUR
Für ed existiert zu jedem Zeitpunkt eine aktuelle Zeile. Die aktuelle
Zeile ist in der Regel die zuletzt durch ein Kommando bearbeitete
Zeile. Auf diese aktuelle Zeile beziehen sich die Kommandos immer
dann, wenn Sie vor den Kommandos keine anderen Adressen angeben.
Die meisten ed-Kommandos haben folgende Struktur:
______________________________________________________________________
[bereich]ed-kommando[parameter ...] <RETURN>
______________________________________________________________________
bereich
Mit bereich wählen Sie die Zeilen im Puffer aus, auf die das ed-
Kommando angewendet werden soll. Für bereich können Sie eine oder
zwei Adressen angeben:
bereich = adresse
Die durch adresse bezeichnete Zeile gilt als ausgewählt.
bereich = adresse1,adresse2
adresse1,adresse2 kennzeichnen den Bereich zwischen den ange-
gebenen Intervallgrenzen einschließlich. Die Suche nach beiden
Adressen beginnt in der aktuellen Zeile. Verändert wird die
aktuelle Zeile erst bei der Ausführung von Kommandos.
Seite 3 Reliant UNIX 5.44 Gedruckt 11/98
ed(1) ed(1)
adresse2 muß sich auf eine Zeile im Puffer beziehen, die
hinter der mit adresse1 bezeichneten Zeile liegt, sonst mel-
det ed einen Fehler.
bereich = adresse1;adresse2
adresse1;adresse2 kennzeichnen den Bereich zwischen den
angegebenen Intervallgrenzen einschließlich. Die Suche nach
adresse1 beginnt in der aktuellen Zeile. Die mit adresse1
bezeichnete Zeile wird dann zur neuen aktuellen Zeile, dann
erst wird adresse2 ermittelt. Sie können so die Zeile fest-
legen, bei der ein Suchvorgang in Vor- und Rückwärtsrichtung
beginnen soll (siehe ADRESSEN).
adresse2 muß sich auf eine Zeile im Puffer beziehen, die
hinter der mit adresse1 bezeichneten Zeile liegt, sonst mel-
det ed einen Fehler.
bereich nicht angegeben:
ed nimmt die zum jeweiligen Kommando gehörige Standard-
Adresse an; diese ist bei jedem ed-Kommando beschrieben.
Benötigt ed keine Adresse und haben Sie trotzdem eine angegeben, mel-
det ed einen Fehler.
Haben Sie mehr Adressen angegeben als das Kommando erlaubt, nimmt ed
die letzten.
ADRESSEN
Adressen konstruieren Sie folgendermaßen:
Adresse Bedeutung
. aktuelle Zeile
$ letzte Zeile
n n-te Zeile
'x die mit dem Buchstaben x markierte Zeile. x muß ein Klein-
buchstabe sein (siehe k).
/rA/ Ein einfacher regulärer Ausdruck rA, der in /.../ einge-
schlossen ist [siehe expressions(5)], adressiert die erste
Zeile, die eine zu dem regulären Ausdruck passende Zeichen-
kette enthält.
Es wird dabei von der aktuellen Zeile aus vorwärts gesucht.
Findet ed keine passende Zeile, setzt ed die Suche am Datei-
anfang fort und sucht wieder bis zur aktuellen Zeile. Ent-
hält der reguläre Ausdruck rA selbst eines der Begrenzungs-
zeichen / oder ?, muß es mit \ entwertet werden.
Seite 4 Reliant UNIX 5.44 Gedruckt 11/98
ed(1) ed(1)
Die Zeichen \n in einem regulären Ausdruck erzielen bei
Neue-Zeile-Zeichen im durchsuchten Text keinen Treffer!
Ein regulärer Ausdruck kann in bereich nur einmal vorkommen,
z. B. adressiert /rA1/,/rA2/ nur die erste zu /rA2/ passende
Zeile.
// Ein leerer regulärer Ausdruck // adressiert die Zeile, die
zu dem zuletzt angegebenen regulären Ausdruck paßt.
?rA? Wie /rA/, aber es wird von der aktuellen Zeile aus rückwärts
in Richtung Dateianfang gesucht. Enthält der reguläre Aus-
druck rA selbst eines der Begrenzungszeichen / oder ?, muß
es mit \ entwertet werden.
adr[+]n n-te Zeile nach der durch adr bezeichneten Zeile.
adr[-]n n-te Zeile vor der durch adr bezeichneten Zeile.
+n n Zeilen nach der aktuellen Zeile.
-n n Zeilen vor der aktuellen Zeile.
[adr]+ ...
[adr]- ...
Eine Zeile nach (+) bzw. vor (-) der durch adr bezeichneten
Zeile. Jedes Vorkommen von + erhöht die Adreßangabe um 1, -
erniedrigt die Adreßangabe um 1. Die Adreßangabe ++ adres-
siert also die zweite Zeile nach der aktuellen Zeile.
, Ein Komma , ist gleichbedeutend mit dem Adressenpaar 1,$,
wenn ein Kommando folgt, sonst wird die letzte Zeile ausge-
geben.
; Ein Strichpunkt ; ist gleichbedeutend mit dem Adressenpaar
.,$, wenn ein Kommando folgt, sonst wird die letzte Zeile
ausgegeben.
KOMMANDOS
Die folgende Liste enthält eine systematische Übersicht aller ed-
Kommandos, die Sie im Kommandomodus eingeben können. Die daran
anschließende ausführliche Kommandobeschreibung ist alphabetisch
geordnet.
Seite 5 Reliant UNIX 5.44 Gedruckt 11/98
ed(1) ed(1)
Übersicht der ed-Kommandos
______________________________________________________________________
| Eingabemodus einschalten |
|__________|_____________|____________________________________________|
| a | append | anfügen |
|__________|_____________|____________________________________________|
| c | change | löschen und ersetzen |
|__________|_____________|____________________________________________|
| i | insert | einfügen |
|__________|_____________|____________________________________________|
______________________________________________________________________
| Bereitzeichen im Kommandomodus ausgeben |
|__________|_____________|____________________________________________|
| P | prompt | Bereitzeichen * ausgeben |
|__________|_____________|____________________________________________|
______________________________________________________________________
| Kommandos rückgängig machen |
|__________|_____________|____________________________________________|
| u | undo | rückgängig machen |
|__________|_____________|____________________________________________|
______________________________________________________________________
| Kommandos abbrechen |
|__________|_____________|____________________________________________|
| <DEL> | --- | abbrechen |
|__________|_____________|____________________________________________|
______________________________________________________________________
| Fehler erläutern |
|__________|_____________|____________________________________________|
| h | help | letzte Fehlermeldung erläutern |
|__________|_____________|____________________________________________|
| H | Help | Hilfemodus ein-/ausschalten. Bei jeder |
| | | Fehleranzeige in Form eines Fragezeichens |
| | | ? wird bei eingeschaltetem Hilfemodus eine|
| | | Fehlermeldung ausgegeben (siehe FEHLERMEL-|
| | | DUNGEN). |
|__________|_____________|____________________________________________|
______________________________________________________________________
| Text ändern |
|__________|_____________|____________________________________________|
| a | append | anfügen |
|__________|_____________|____________________________________________|
| c | change | löschen und ersetzen |
|__________|_____________|____________________________________________|
| d | delete | löschen |
|__________|_____________|____________________________________________|
| i | insert | einfügen |
|__________|_____________|____________________________________________|
Seite 6 Reliant UNIX 5.44 Gedruckt 11/98
ed(1) ed(1)
______________________________________________________________________
| Zeilen ausgeben |
|__________|_____________|____________________________________________|
| p | print | ausgeben |
|__________|_____________|____________________________________________|
| l | list | ausgeben mit nicht-druckbaren Zeichen in |
| | | Ersatzdarstellung oder als Oktalzahlen |
|__________|_____________|____________________________________________|
| adresse | --- | adressierte Zeile ausgeben |
|__________|_____________|____________________________________________|
| n | number | Zeilen numerieren und ausgeben |
|__________|_____________|____________________________________________|
| <RETURN> | --- | Zeile hinter aktueller Zeile ausgeben |
|__________|_____________|____________________________________________|
______________________________________________________________________
| Zeilennummern ausgeben |
|__________|_____________|____________________________________________|
| adresse= | --- | Nummer der adressierten Zeile ausgeben |
|__________|_____________|____________________________________________|
| n | number | Zeilen numerieren und ausgeben |
|__________|_____________|____________________________________________|
______________________________________________________________________
| Zeilenbereiche verschieben |
|__________|_____________|____________________________________________|
| t | transfer | kopieren von Zeilen |
|__________|_____________|____________________________________________|
| m | move | verschieben von Zeilen |
|__________|_____________|____________________________________________|
______________________________________________________________________
| Textmuster suchen und ersetzen |
|__________|_____________|____________________________________________|
| s | substitute | suchen und ersetzen |
|__________|_____________|____________________________________________|
______________________________________________________________________
| Zeilen verbinden |
|__________|_____________|____________________________________________|
| j | join | aufeinanderfolgende Zeilen verbinden |
|__________|_____________|____________________________________________|
______________________________________________________________________
| Zeilen markieren |
|__________|_____________|____________________________________________|
| k | mark | Zeilen markieren |
|__________|_____________|____________________________________________|
Seite 7 Reliant UNIX 5.44 Gedruckt 11/98
ed(1) ed(1)
______________________________________________________________________
| Ausgewählte Zeilen mit Kommandos bearbeiten |
|__________|_____________|____________________________________________|
| g | global | Kommandoliste global für alle Zeilen aus- |
| | | führen, die zu /rA/ passen |
|__________|_____________|____________________________________________|
| G | Global | interaktiv Kommandoliste global für alle |
| | | Zeilen ausführen, die zu /rA/ passen |
|__________|_____________|____________________________________________|
| v | vice-versa | wie g, aber für alle Zeilen, die nicht zu |
| | | /rA/ passen |
|__________|_____________|____________________________________________|
| V | Vice-Versa | wie G, aber für alle Zeilen, die nicht zu |
| | | /rA/ passen |
|__________|_____________|____________________________________________|
______________________________________________________________________
| Aktuellen Dateinamen ändern |
|__________|_____________|____________________________________________|
| f | file-name | aktuellen Dateinamen ändern/ausgeben |
|__________|_____________|____________________________________________|
______________________________________________________________________
| Shell-Kommandos ausführen |
|__________|_____________|____________________________________________|
| ! | --- | Shell-Kommando aufrufen |
|__________|_____________|____________________________________________|
______________________________________________________________________
| Dateien in Puffer einlesen |
|__________|_____________|____________________________________________|
| e | edit | Pufferinhalt löschen und neu einlesen |
|__________|_____________|____________________________________________|
| E | Edit | Pufferinhalt ohne Warnung löschen und neu |
| | | einlesen |
|__________|_____________|____________________________________________|
| r | read | Datei in Puffer einlesen |
|__________|_____________|____________________________________________|
______________________________________________________________________
| Dateiinhalt ver- und entschlüsseln |
|__________|_____________|____________________________________________|
| C | crypt | Schlüsseleingabe für Leseoperationen |
|__________|_____________|____________________________________________|
| X | crypt | Schlüsseleingabe für Lesen und Sichern |
|__________|_____________|____________________________________________|
______________________________________________________________________
| Pufferinhalt sichern |
|__________|_____________|____________________________________________|
| w | write | Pufferinhalt in Datei schreiben |
|__________|_____________|____________________________________________|
| W | write | Pufferinhalt an Datei anfügen |
|__________|_____________|____________________________________________|
Seite 8 Reliant UNIX 5.44 Gedruckt 11/98
ed(1) ed(1)
______________________________________________________________________
| Editor verlassen |
|__________|_____________|____________________________________________|
| q | quit | ed verlassen |
|__________|_____________|____________________________________________|
| Q | Quit | ed verlassen ohne Warnung |
|__________|_____________|____________________________________________|
| <END> | --- | ed verlassen |
|__________|_____________|____________________________________________|
BESCHREIBUNG DER ED-KOMMANDOS
Die eckigen Klammern [] sind nicht einzugeben! Sie zeigen an, daß die
dazwischen eingeschlossene Adreßangabe fakultativ ist.
In der Regel darf in einer Zeile nur ein Kommando stehen. Jedoch kön-
nen Sie an die Kommandos (mit Ausnahme von e, f, r und w) als Suffix
l, n oder p anhängen, wenn die im folgenden unter den Kommandos l, n
und p beschriebenen Funktionen ausgeführt werden sollen.
[adresse]a
text
. (a - append) liest den eingegebenen text und fügt ihn hinter der
mit adresse adressierten Zeile an. Die aktuelle Zeile ist nun
entweder die letzte Zeile des eingefügten Textes oder, falls Sie
keinen Text eingegeben haben, die adressierte Zeile. Die Adresse
0 ist bei diesem Kommando erlaubt; der Text wird dann vor die
erste Zeile des Puffers eingefügt. Über das Terminal können Sie
maximal 2048 Zeichen je Zeile einschließlich Neue-Zeile-Zeichen
eingeben.
adresse nicht angegeben: adresse = .
[bereich]c
text
. (c - change) löscht den angegebenen bereich und ersetzt ihn durch
den eingegebenen text. Die aktuelle Zeile ist nun entweder die
letzte Zeile des eingegebenen Textes oder, falls Sie keinen Text
eingegeben haben, die Zeile hinter den gelöschten Zeilen.
bereich nicht angegeben: bereich = .,.
C Verschlüsselungskommando:
C entspricht dem Kommando X mit dem Unterschied: Es wird angenom-
men, daß jeder mit den Kommandos e und r zu lesende Text ver-
schlüsselt ist (siehe Option -C).
[bereich]d
(d - delete) löscht den angegebenen bereich. Die Zeile hinter der
letzten gelöschten Zeile wird zur aktuellen Zeile. Standen die
gelöschten Zeilen am Ende des Puffers, wird die neue letzte Zeile
die aktuelle Zeile.
Seite 9 Reliant UNIX 5.44 Gedruckt 11/98
ed(1) ed(1)
bereich nicht angegeben: bereich = .,.
e [datei]
(e - edit) löscht den gesamten Puffer und liest eine Kopie des
Inhalts von datei ein. Ist der Pufferinhalt seit dem letzten
Sichern oder Überschreiben verändert und nicht mit w gesichert
worden, löscht ed den Pufferinhalt nicht sofort, sondern warnt
Sie mit einem ? vor versehentlichem Löschen. Geben Sie daraufhin
ein weiteres Mal e ein, wird der Pufferinhalt ohne weitere War-
nung überschrieben. Die Anzahl der eingelesenen Bytes wird ausge-
geben, wenn Sie ed nicht mit der Option -s aufgerufen haben. Die
aktuelle Zeile ist die letzte Zeile des Puffers. Der Name datei
wird gespeichert, so daß er später bei den Kommandos e, r und w
als aktueller Dateiname verwendet werden kann. Wenn Sie für datei
ein Ausrufezeichen ! angeben, wird der Rest der Zeile als Shell-
Kommando interpretiert. Das Ergebnis dieses Shell-Kommandos wird
in den Puffer eingelesen. Ein mit ! eingeleitetes Shell-Kommando
wird nicht als Dateiname gespeichert.
datei nicht angegeben: datei = aktueller Dateiname
E [datei]
(E - edit) verhält sich wie edit, außer, daß es den Puffer ohne
warnendes ? überschreibt, auch wenn der Inhalt des Puffers verän-
dert und nicht gerettet wurde.
datei nicht angegeben: datei = aktueller Dateiname
f [datei]
(f - file) setzt den aktuellen Dateinamen auf datei. Den aktuel-
len Dateinamen verwenden die Kommandos e, E, r und w.
datei nicht angegeben: ed gibt den aktuellen Dateinamen aus.
[bereich] g/rA/kommandoliste
(g - global) markiert im ersten Schritt alle Zeilen, die eine
Zeichenkette enthalten, die zu rA paßt. rA ist ein einfacher
regulärer Ausdruck [siehe expressions(5)]. Dann wird die nächste
markierte Zeile zur aktuellen Zeile und kommandoliste darauf
angewandt.
Ein einzelnes Kommando oder das erste einer kommandoliste müssen
Sie in dieselbe Zeile schreiben wie das Kommmando g. Alle Zeilen
einer kommandoliste außer der letzten müssen Sie mit \<RETURN>,
die letzte mit <RETURN> abschließen.
Die Kommandos a, i und c mit der dazugehörigen Eingabe text sind
zugelassen. Auch Zeilen in text müssen Sie mit \<RETURN>
abschließen. Den die Eingabe normalerweise abschließenden Punkt .
können Sie in der letzten Zeile der kommandoliste weglassen.
Eine leere kommandoliste entspricht dem Kommando p.
Seite 10 Reliant UNIX 5.44 Gedruckt 11/98
ed(1) ed(1)
Die Kommandos g, G, v und V sind in der kommandoliste nicht zuge-
lassen.
Nicht mit dem Kommando ! zu kombinieren!
bereich nicht angegeben: bereich = 1,$
[bereich]G/rA/
(G - global) G ist die interaktive Variante des Kommandos g.
Zuerst wird jede Zeile markiert, die zu rA paßt. rA ist ein ein-
facher regulärer Ausdruck [siehe expressions(5)]. Die erste der
markierten Zeilen wird ausgegeben. Sie wird gleichzeitig zur
aktuellen Zeile.
Sie haben nun die Möglichkeit, ein Kommando anzugeben, das ausge-
führt werden soll. Hierbei darf es sich nicht um a, c, i, g, G, v
oder V handeln. Nach der Ausführung dieses Kommandos wird die
nächste markierte Zeile ausgegeben, usw.
Ein Neue-Zeile-Zeichen hat dieselbe Wirkung wie ein leeres Kom-
mando. Wenn Sie das kommerzielle Und & eingeben, wird das Kom-
mando wiederholt, das seit dem letzten Aufrufen von G als letztes
ausgeführt wurde.
Mit Kommandos, die unter G aufgerufen werden, können beliebige
Zeilen im Puffer adressiert und bearbeitet werden. G können Sie
mit der Taste <DEL> abbrechen.
bereich nicht angegeben: bereich = 1,$
h (h - help) gibt eine kurze Fehlermeldung aus, die den Grund für
das letzte Fragezeichen ? auf dem Bildschirm erklärt. Mögliche
Fehlermeldungen siehe FEHLERMELDUNGEN.
H (H - help) bewirkt, daß ed in einen Modus übergeht, in dem bei
auftretenden Fehlern anstelle von ? erläuternde Fehlermeldungen
ausgegeben werden. Auch das zuletzt ausgegebene ? wird, falls
vorhanden, erläutert. Diesen Modus können Sie durch ein zweites
Aufrufen von H ausschalten.
Standardmäßig ist der Modus H ausgeschaltet. Mögliche Fehlermel-
dungen siehe FEHLERMELDUNGEN.
[adresse]i
text
. (i - insert) fügt text vor der mit adresse adressierten Zeile
ein. Die aktuelle Zeile ist nun entweder die letzte Zeile des
eingefügten Textes oder, falls Sie keinen Text eingegeben haben,
die adressierte Zeile. Dieses Kommando unterscheidet sich vom
Kommando append nur durch die Positionierung des eingegebenen
Textes. Adresse 0 ist nicht zulässig. Über ein Terminal dürfen
Sie maximal 2048 Zeichen einschließlich des Neue-Zeile-Zeichens
Seite 11 Reliant UNIX 5.44 Gedruckt 11/98
ed(1) ed(1)
je Zeile eingeben.
adresse nicht angegeben: adresse = .
[bereich]j
(j - join) verbindet alle in bereich liegenden Zeilen zu einer
einzigen Zeile und löscht dabei die entsprechenden Neue-Zeile-
Zeichen. Wenn Sie als Adresse nur eine Zeile angeben, geschieht
nichts. Die neue Zeile wird zur aktuellen Zeile.
bereich nicht angegeben: bereich = .,.
[adresse]kx
(k - mark) markiert die mit adresse adressierte Zeile mit dem für
x angegebenen Buchstaben, wobei x ein Kleinbuchstabe sein muß.
Die Markierung wird aber nicht ausgegeben. Adressieren können Sie
die markierte Zeile mit Hochkomma x ('x). Die aktuelle Zeile
bleibt unverändert.
adresse nicht angegeben: adresse = .
[bereich]l
(l - list) gibt im Gegensatz zu p den angegebenen bereich wie
folgt aus: Einige nicht-druckbare Zeichen werden in Ersatzdar-
stellung (z. B. Tabulatorzeichen), die übrigen nicht-druckbaren
Zeichen werden als Oktalzahlen ausgegeben; überlange Zeilen wer-
den mehrzeilig ausgegeben, am Ende mit dem Zeilenfortsetzungszei-
chen \ versehen; jedes Zeilenende wird mit $ gekennzeichnet. Das
Kommando l können Sie an jedes Kommando anhängen, mit Ausnahme
von e, f, r und w.
Folgende Ersatzdarstellungen werden verwendet:
\\ Backslash (zur Unterscheidung von Oktalzahlen)
\a Warnung, Klingel
\b Backspace
\f Form Feed, Seitenvorschub
\r Carriage Return, Wagenrücklauf
\t Tabulator
\v Vertikal-Tabulator
bereich nicht angegeben: bereich = .,.
Seite 12 Reliant UNIX 5.44 Gedruckt 11/98
ed(1) ed(1)
[bereich]madresse
(m - move) verschiebt den bereich hinter die mit adresse adres-
sierte Zeile. Die letzte der verschobenen Zeilen wird die aktu-
elle Zeile. Wenn Sie für adresse den Wert 0 angeben, wird bereich
ganz an den Anfang der Datei gesetzt. Liegt adresse innerhalb von
bereich, gibt ed eine Fehlermeldung aus.
bereich nicht angegeben: bereich = .,.
[bereich]n
(n - number) gibt die mit bereich adressierten Zeilen aus, wobei
an den Anfang jeder Zeile die Zeilennummer und ein Tabulatorzei-
chen gesetzt werden. Die zuletzt ausgegebene Zeile wird zur neuen
Zeile. Das Kommando n können Sie an jedes Kommando anhängen, mit
Ausnahme von e, f, r und w.
bereich nicht angegeben: bereich = .,.
[bereich]p
(p - print) gibt die mit bereich adressierten Zeilen aus. Nicht-
druckbare Zeichen werden unverändert ausgegeben. Überlange Zeilen
laufen ohne besondere Kennzeichnung auf der nächsten Zeile wei-
ter, d. h. man kann sie nicht als solche erkennen. Die zuletzt
ausgegebene Zeile wird zur aktuellen Zeile. Das Kommando p können
Sie an jedes Kommando anhängen, mit Ausnahme von e, f, r und w.
Mit dp wird also die aktuelle Zeile gelöscht und die neue aktu-
elle Zeile ausgegeben.
bereich nicht angegeben: bereich = .,.
P (P - prompt) bewirkt, daß ed im Kommandomodus als Bereitzeichen
den Stern * oder die Bereitzeichenkette (siehe Option -p) aus-
gibt. Diesen Modus können Sie durch einen zweiten Aufruf von P
wieder ausschalten. Standardmäßig ist dieser Modus ausgeschaltet.
q (q - quit) beendet den ed. Ist der Pufferinhalt seit dem letzten
Sichern oder Überschreiben verändert und nicht mit w gesichert
worden, gibt ed als Warnung vor versehentlichem Löschen ein ? aus
und wartet auf weitere Eingabe. Wenn Sie dann <CTRL-D>, Q oder
zum zweitenmal q eingeben, beenden Sie den ed ohne weitere War-
nung und ohne den Pufferinhalt gesichert zu haben.
Vorsicht:
Wenn Sie nach dem ersten q noch Aktionen durchführen, die
den Pufferinhalt nicht verändern, beenden Sie mit dem zwei-
ten q auch den ed ohne weitere Warnung und ohne Sicherung
des Pufferinhalts.
Q (Q - quit) beendet den ed sofort ohne Warnung, auch wenn Sie den
Pufferinhalt seit dem letzten Sichern oder Überschreiben verän-
dert und nicht mit w gesichert haben.
Seite 13 Reliant UNIX 5.44 Gedruckt 11/98
ed(1) ed(1)
[adresse]r [datei]
(r - read) liest datei und fügt ihren Inhalt hinter der mit
adresse adressierten Zeile ein.
Die Adresse 0 ist für dieses Kommando erlaubt. Sie bewirkt, daß
datei an den Anfang des Puffers geschrieben wird. Nach erfolgrei-
chem Lesen wird die Anzahl der gelesenen Bytes ausgegeben, wenn
Sie ed nicht mit der Option -s aufgerufen haben. Die aktuelle
Zeile ist die letzte eingelesene Zeile. Der aktuelle Dateiname
wird nicht auf datei gesetzt, es sei denn, Sie haben ed ohne
Dateinamen aufgerufen und datei ist der erste seit dem Aufruf
angesprochene Dateiname. Wenn Sie für datei ein Ausrufezeichen !
angeben, dann wird der Rest der Zeile als Shell-Kommando inter-
pretiert, ausgeführt und die Ausgabe davon eingelesen. Ein sol-
ches Kommando wird nicht als aktueller Dateiname gespeichert.
adresse nicht angegeben: adresse = $
datei nicht angegeben: datei = aktueller Dateiname
[bereich]s/rA/Ersetzungszeichenkette/[g|n]
(s - substitute) durchsucht jede Zeile in bereich nach Zeichen-
ketten, die zu rA passen. rA ist ein einfacher internationali-
sierter regulärer Ausdruck [siehe expressions(5)]. In jeder so
gefundenen Zeile wird eine zu rA passende Zeichenkette durch
Ersetzungszeichenkette ersetzt: ohne g und n wird das erste, mit
g jedes und mit n das n-te Auftreten einer passenden Zeichenkette
in der Zeile ersetzt. n ist eine positive ganze Zahl von 1 bis
512. Falls keine passende Zeichenkette gefunden wurde, meldet ed
ein ? als Fehler. Als Trennzeichen zwischen dem Kommando s, dem
regulären Ausdruck rA und Ersetzungszeichenkette können Sie nicht
nur den Schrägstrich / verwenden, sondern auch jedes andere
beliebige Zeichen außer: Leerzeichen und Neue-Zeile-Zeichen. Das
Zeichen wird dadurch als Trennzeichen definiert, daß es unmittel-
bar auf s folgt. Zur aktuellen Zeile wird die Zeile, auf der die
letzte Ersetzung stattgefunden hat.
Sonderzeichen in der Ersetzungszeichenkette
Sonderzeichen Bedeutung
& Wird durch die Zeichenkette ersetzt, die in
der aktuellen Zeile zu dem regulären Ausdruck
rA paßt.
\m Wird durch die Zeichenkette ersetzt, die zum
m-ten in \(...\) eingeschlossenen regulären
Unterausdruck von rA paßt, wobei m eine ein-
stellige Dezimalzahl ist. Bei durch Klammern
ineinander geschachtelten Unterausdrücken wird
m durch Zählen des Auftretens von \( von links
nach rechts bestimmt.
Seite 14 Reliant UNIX 5.44 Gedruckt 11/98
ed(1) ed(1)
% Wird durch die Zeichenkette ersetzt, mit der
beim zuletzt abgelaufenen s-Kommando ersetzt
wurde, wenn Ersetzungszeichenkette nur aus dem
Prozent-Zeichen % besteht.
Die Sonderbedeutung dieser Zeichen können Sie aufheben, indem Sie
Ihnen jeweils einen Gegenschrägstrich \ voranstellen.
Zeile trennen in Ersetzungszeichenkette
Wenn Sie in Ersetzungszeichenkette ein Neue-Zeile-Zeichen haben
möchten, müssen Sie es mit \ davor entwerten. Sie geben also
\<RETURN> ein. Ein solches Ersetzungskommando darf nicht Teil von
kommandoliste der Kommandos g und v sein.
bereich nicht angegeben: bereich = .,.
[bereich]tadresse
kopiert bereich hinter die angegebene Zeile adresse. Als Adresse
ist 0 zugelassen. Zur aktuellen Zeile wird die letzte der kopier-
ten Zeilen.
bereich nicht angegeben: bereich = .,.
u (u - undo) macht das letzte Kommando rückgängig, mit dem der
Inhalt des Puffers geändert wurde. Rückgängig machen können Sie
die Kommandos a, c, d, g, i, j, m, r, s, t, v, G und V.
[bereich]v/rA/kommandoliste
(v - vice-versa) bearbeitet alle Zeilen mit kommandoliste, die
keine Zeichenkette enthalten, die zu rA paßt. rA ist ein einfa-
cher regulärer Ausdruck [siehe expressions(5)]. Bis auf diese
Zeilenauswahl funktioniert v wie das Kommando g.
Nicht mit dem Kommando ! zu kombinieren!
bereich nicht angegeben: bereich = 1,$
[bereich]V/rA/
(V - vice-versa) ist die interaktive Variante des Kommandos v.
Sie können mit V alle Zeilen bearbeiten, die keine Zeichenkette
enthalten, die zu rA paßt. rA ist ein einfacher internationali-
sierter regulärer Ausdruck [siehe expressions(5)]. Bis auf diese
Zeilenauswahl funktioniert V wie das Kommando G.
bereich nicht angegeben: bereich = 1,$
[bereich]w [datei]
(w - write) schreibt bereich in die datei. Der aktuelle Dateiname
ändert sich nicht, falls er bereits gesetzt ist. Ist er nicht
gesetzt, wird datei zum neuen aktuellen Dateinamen. Der alte
Inhalt von datei wird dabei überschrieben. Existiert datei noch
Seite 15 Reliant UNIX 5.44 Gedruckt 11/98
ed(1) ed(1)
nicht, so wird sie angelegt. Die aktuelle Zeile bleibt unverän-
dert. Nach erfolgreichem Schreiben wird die Anzahl der geschrie-
benen Bytes ausgegeben, vorausgesetzt, Sie haben den ed nicht mit
der Option -s aufgerufen.
Wenn Sie für datei statt eines Dateinamens das Ausrufezeichen !
angeben, wird der Rest der Zeile als Shell-Kommando interpretiert
und ausgeführt. bereich ist dann die Standardeingabe für das
Shell-Kommando. Ein solches Kommando wird nicht als aktueller
Dateiname gespeichert.
bereich nicht angegeben: bereich = 1,$
datei = aktueller Dateiname
[bereich]W [datei]
(W - write) fügt bereich an die Datei datei an, sonst verhält es
sich wie das Kommando w, das datei aber überschreibt. Existiert
datei noch nicht, wird sie angelegt.
X Verschlüsselungsoption: ed fragt Sie nach einem Schlüssel, der
bei folgenden e-, r- und w-Kommandos zum Ent- und Verschlüsseln
von Text durch den Algorithmus des Kommandos crypt verwendet
wird. Ein leerer Schlüssel schaltet diesen Mechanismus wieder ab.
ed klärt ab, ob der einzulesende Text (e und r) verschlüsselt ist
oder nicht. Die temporäre Pufferdatei wird ebenfalls mit einer
Transformation des eingegebenen Schlüssels verschlüsselt (siehe
Option -x).
adresse
Die mit adresse adressierte Zeile wird ausgegeben.
[adresse]=
Die Nummer von adresse wird ausgegeben. Die aktuelle Zeile wird
dadurch nicht verändert.
adresse nicht angegeben: adresse = $
!kommando
Der Rest der Zeile hinter dem ! wird als Shell-Kommando interpre-
tiert und ausgeführt. Ist in kommando ein nicht entwertetes
Prozent-Zeichen % enthalten, wird es durch den gespeicherten
Dateinamen ersetzt. !! wiederholt das letzte kommando. In beiden
Fällen wird die expandierte Kommandozeile ausgegeben. Nach Been-
digung des kommandos ist ed wieder aktiv. Die aktuelle Zeile wird
nicht verändert. Nicht zu kombinieren mit den Kommandos g und v!
<RETURN>
Geben Sie im Kommandomodus die Taste <RETURN> alleine ein, wird
die Zeile hinter der aktuellen Zeile ausgegeben. Dies ist mit der
Eingabe .+1p gleichbedeutend. Sie können so im Puffer von einer
Zeile zur nächsten springen.
Seite 16 Reliant UNIX 5.44 Gedruckt 11/98
ed(1) ed(1)
Die Taste <RETURN> müssen Sie drücken, um im Kommandomodus die
Eingabe eines Kommandos oder um im Eingabemodus die Eingabe einer
Textzeile abzuschließen.
<DEL>
Mit der Taste <DEL> können Sie laufende ed-Kommados unterbrechen
oder die Eingabe einer Zeile abbrechen. ed meldet sich anschlie-
ßend mit einem ? zurück.
<CTRL-D>
Die Wirkung der Tasten <CTRL-D> ist dieselbe wie beim Kommando q.
Steht das Zeichen, das einen regulären Ausdruck oder eine Erset-
zungszeichenkette abschließt (z. B. ein /), unmittelbar vor einem
Neue-Zeile-Zeichen, dann können Sie dieses Zeichen weglassen. Die
adressierte Zeile wird dann ausgegeben. Die folgenden Beispiel-
paare haben die gleiche Funktion:
s/s1/s2 s/s1/s2/p
g/s1 g/s1/p
?s1 ?s1?
ARBEITEN MIT ED-SCRIPTS
ed liest Kommandos und einzufügenden Text von der Standardeingabe.
Deshalb können Sie die Eingabe auch umlenken, so daß ed aus einer
Datei liest. Mit
$ ed -s datei < edscriptdatei > ausgabe
wird die Datei datei editiert und mit den ed-Kommandos bearbeitet, die
in der Datei edscriptdatei stehen. Option -s unterdrückt die stan-
dardmäßige Ausgabe der Meldungstexte auf den Bildschrim.
Das Arbeiten mit ed-scripts hat den Vorteil, daß Sie bestimmte Komman-
dofolgen jederzeit reproduzieren und beliebig oft verwenden können.
Außerdem können Sie so diesen Vorgang auch als Hintergrundprozeß
ablaufen lassen und selbst ungestört am Bildschirm weiterarbeiten:
$ ed datei < edscriptdatei&
Arbeiten Sie mit einem fehlerhaften ed-Skript, dann beendet sich ed
beim ersten Fehler.
ENDESTATUS
0 bei Erfolg
>0 bei fehlerhaftem Aufruf des ed oder bei Abbruch einer Prozedur
aufgrund fehlerhafter ed-Kommandos.
Seite 17 Reliant UNIX 5.44 Gedruckt 11/98
ed(1) ed(1)
FEHLERMELDUNGEN
Wenn Ihnen bei ed-Kommandos Fehler unterlaufen:
?
Syntaxfehler im Kommando
?datei
Datei datei ist nicht vorhanden oder kann nicht gelesen werden.
Nähere Informationen bekommen Sie mit den Kommandos h und H. Die häu-
figsten Fehlermeldungen sind:
Line out of range
Zeile außerhalb des gültigen Zeilenbereichs
Warning: expecting 'w'
Warnung: w wird erwartet
No space after command
kein Leerzeichen hinter dem Kommando
Unknown command
unbekanntes Kommando
Bad range
ungültige Bereichsangabe
Cannot open input file
Eingabedatei kann nicht geöffnet werden
Illegal or missing delimiter
unzulässiges oder fehlendes Trennzeichen
Illegal suffix
unzulässiges Suffix
Illegal or missing filename
unzulässiger oder fehlender Dateiname
Seite 18 Reliant UNIX 5.44 Gedruckt 11/98
ed(1) ed(1)
No match
keine passende Zeichenkette gefunden
INTERNATIONALE UMGEBUNG
Die Umgebungsvariable LCMESSAGES bestimmt die Sprache der Meldungs-
texte.
In geklammerten regulären Ausdrücken bestimmt die Umgebungsvariable
LCCOLLATE die Bedeutung von Zeichenbereichen, Äquivalenzklassen und
Zeicheneinheiten, die Umgebungsvariable LCCTYPE die Bedeutung von
Zeichenklassen. LCCTYPE bestimmt zudem, welche Zeichen bei der Ver-
wendung des ed-Kommandos l als nicht druckbar gelten.
Wenn LCMESSAGES, LCCOLLATE oder LCCTYPE nicht oder als leere Zei-
chenkette definiert ist, wird der Wert von LANG als Standardwert für
die jeweils nicht gesetzte oder leere Variable herangezogen. Ist auch
LANG nicht oder als leere Zeichenkette definiert, verhält sich das
System so, als wäre es nicht internationalisiert.
Hat eine der Variablen für die internationale Umgebung einen ungülti-
gen Wert, verhält sich das System so, als wäre keine Variable gesetzt.
Die Umgebungsvariable LCALL bestimmt die gesamte internationale Umge-
bung. LCALL hat Vorrang vor allen anderen Umgebungsvariablen im
Bereich der Internationalisierung.
BEISPIELE
Beispiel 1
Beispiel für ein ed-Script:
In einer Datei sollen die ersten drei Zeilen durch eine Zeile mit dem
Text "Adressen" und überall soll das Wort "Stachus" durch "Karlsplatz"
ersetzt werden.
Inhalt der Datei edscript:
1,3c
Adressen
.
1,$s/Stachus/Karlsplatz/g
w
q
Bearbeitung einer Datei mit den Kommandos aus edscript:
$ ed datei < edscript
Wenn ed seine Kommandos nicht von der Tastatur, sondern aus einer
Datei liest, wird der Editor nach dem ersten für ed unverständlichen
Kommando verlassen.
Seite 19 Reliant UNIX 5.44 Gedruckt 11/98
ed(1) ed(1)
Beispiel 2
Beispiel für ein Here-Dokument [siehe sh(1)]:
In beliebigen Dateien, die beim Aufruf der Prozedur xy als Argumente
übergeben werden, sollen die ersten drei Zeilen durch eine Zeile mit
dem Text "Adressen" und überall soll das Wort "Stachus" durch "Karls-
platz" ersetzt werden.
Inhalt der Prozedurdatei xy:
for i in $*
do
ed $i << scrend
1,3c
Adressen
.
1,\$s/Stachus/Karlsplatz/g
w
scrend
done
Bearbeitung der Dateien text1, text2 und text3 mit der Prozedur xy:
$ sh xy text1 text2 text3
Die Zeichenkette << scrend hinter dem ed-Aufruf bewirkt, daß die Shell
den Text bis zur Zeichenkette scrend an ed als Eingabe übergibt. Die
zweite Zeichenkette scrend muß ohne führende Leerzeichen als einziges
Wort in einer Zeile stehen. Bei der Adreßangabe 1,$ muß die Sonderbe-
deutung von $ mit \ aufgehoben werden, da die Shell sonst das nachfol-
gende s als Name einer Shell-Variablen interpretieren würde.
Beispiel 3
Im folgenden Beispiel werden einige ed-Kommandos vorgeführt und erläu-
tert:
$ ed - Aufruf
P - Bereitzeichen * im Kommandomodus ausgeben
*a - Anfügen an aktuelle Zeile, hier Dateianfang
zeile1 - Eingabetext
zeile2
zeile3
. - Eingabemodus beenden
*1,$p - Zeile 1 bis letzte Zeile ausgeben
zeile1
zeile2
zeile3
*p - Aktuelle (= zuletzt bearbeitete) Zeile ausgeben
zeile3
*n - Aktuelle Zeile mit Zeilennummer ausgeben
Seite 20 Reliant UNIX 5.44 Gedruckt 11/98
ed(1) ed(1)
3 zeile3
*1,$n - Zeile 1 bis letzte Zeile mit Zeilennummern ausgeben
1 zeile1
2 zeile2
3 zeile3
*2c - Zeile 2 ersetzen durch nachfolgende Eingabe mit
Tabulatorzeichen
zeile2 <TAB> zeile2 <TAB> zeile2
noch eine zeile2
. - Eingabemodus beenden
*p - Aktuelle Zeile ausgeben
noch eine zeile2
*1,$n - Zeile 1 bis letzte Zeile mit Zeilennummern ausgeben
1 zeile1
2 zeile2 zeile2 zeile2
3 noch eine zeile2
4 zeile3
*4s/3/4 - In Zeile 4 Zeichen 3 suchen und ersetzen durch 4
zeile4
*n - Aktuelle Zeile mit Zeilennummer ausgeben
4 zeile4
*1,$s/z/Z/g - Von Zeile 1 bis letzte Zeile alle Zeichen z
suchen und durch Z ersetzen
*1,$p - Zeile 1 bis letzte Zeile ausgeben
Zeile1
Zeile2 Zeile2 Zeile2
noch eine Zeile2
Zeile4
*2l - Zeile 2 mit nicht druckbaren Zeichen als Mnemoniks ausgeben
Zeile2\tZeile2\tZeile2$
*
*2r datei - Hinter Zeile 2 Inhalt von datei in Puffer einlesen
57 und Anzahl der eingelesenen Zeichen ausgeben.
datei muß hierfür existieren!
*1,$n - Zeile 1 bis letzte Zeile mit Zeilennummern ausgeben
1 Zeile1
2 Zeile2 Zeile2 Zeile2
- Diese und die zwei folgenden Zeilen kommen aus datei
3 zeile1 aus datei
4 zeile2 aus datei
5 letzte zeile aus datei
6 noch eine Zeile2
7 Zeile4
*6,7c - Zeile 6 bis 7 ersetzen durch nachfolgende Eingabe
allerletzte Zeile
. - Eingabemodus beenden
*1,$n - Zeile 1 bis letzte Zeile mit Zeilennummern ausgeben
1 Zeile1
2 Zeile2 Zeile2 Zeile2
3 zeile1 aus datei
4 zeile2 aus datei
5 letzte Zeile aus datei
Seite 21 Reliant UNIX 5.44 Gedruckt 11/98
ed(1) ed(1)
6 allerletzte Zeile
*q - Versuch, Editor mit q zu verlassen
? - Warnung
*h - Fragezeichen erklären
warning: expecting 'w'
- Erklärung: erwartetes Kommando w zum Sichern
des Pufferinhalts wurde nicht eingegeben
*w bsp - Sichern des Pufferinhalts in der Datei bsp
103 - Ausgabe der Anzahl der gesicherten Zeichen
*q - Editor verlassen
$ - Bereitzeichen der Shell
DATEIEN
ed.hup
In dieser Datei werden die Daten gesichert, wenn ed das Signal
SIGHUP empfängt [siehe kill(2)].
/var/tmp
Wenn dieses Verzeichnis existiert, dann wird es als Verzeichnis
für die Speicherung der Temporärdatei verwendet.
$TMPDIR
Wenn diese Variable gesetzt und nicht leer ist, dann wird ihr
Wert anstelle von /var/tmp als Verzeichnis für die Speicherung
der Temporärdatei verwendet.
/tmp Wenn die Variable TMPDIR nicht auf ein existierendes Verzeichnis
gesetzt ist und das Verzeichnis /var/tmp nicht existiert, dann
wird /tmp zur Speicherung der Temporärdatei verwendet.
SIEHE AUCH
ced(1), crypt(1), edit(1), ex(1), grep(1), sed(1), sh(1), stty(1),
umask(1), vi(1), fspec(4), expressions(5), regexp(5).
Seite 22 Reliant UNIX 5.44 Gedruckt 11/98