Hi Raffael, Am Mittwoch, 16. November 2005 20:24 schrieb Raffael Schmid:
Wie kann ich eine gewisse Zeile aus einem Shellscript löschen? Und wie kann ich eine Zeile an einem gewissen Ort einfügen?
Zu ersterem habe ich bereits ein bischen herumprobiert...
$ sed -e '1,4d' -e '1,2p' test-file d d e f g
aber diese Befehl funktioniert nicht... er gibt mir immer den Rest aus...!?
wie kommst du darauf das es nicht funktioniert?
Inhalt von test-file: -------------------- i a b c d e f g --------------------
du sagst beim 1. -e '1,4d' das die Zeilen 1-4 gelöscht werden sollen, das werden sie ja auch (i,a,b,c sind weg, d,e,f,g sind übrig), dann auf die verbliebene (Rest-)Datei die 2. Anweisung ausführen -e '1,2p' das gibt d, danach wird dann der Rest der datei ausgegeben, völlig normal, wenn du alles bis auf zeile 4 löschen willst kannst du zb. sed -e '1,4d' -e '6,$d' machen. man sed Das Gemeine an der Sache ist das in deinem Beispiel (wo die ersten Zeilen ja schon weg sind) die Zählung beim 2. -e bei 1 wieder beginnt, in meinem Beispiel aber die ursprüngliche Zeilennummer für den Bereichsanfang steht.
Das Einfügen habe ich auch ein bischen ausprobiert:
$ sed -e '1,4d' -e '1,1i\test-test' test-file test-test d e f g
Es ist eigentlich das was ich erwartet habe... aber ich verstehe die Syntax nicht! Warum muss ich '1,1i\test-test' schreiben? Warum dieses 1,1 ??
weil das sog. Adressen sind, es wird ein Bereich angegeben und ein Bereich hat immer einen Anfang und ein Ende die in diesem Fall durch Kommata getrennt werden.
Ich hoffe auf schnelle Antworten, da ich Morgen in der Schule einen Test über das habe:-)
eigentlich hätte ich dir erst morgen Antworten sollen ... aber sed versteht man eh nicht in einer Nacht. Gruss Falk