PDA

Archiv verlassen und diese Seite im Standarddesign anzeigen : Zeilen in Datei löschen



07-03-2001, 16:03
Hi,

ich hab ne Datei, an der ich an bestimmten Stellen Zeilen herauslöschen möchte.

Es sind immer 2 Zeilen. Dies erste kann ich mit einem grep erfassen.

Wie kann ich diese Zeile und die nächste (die leer ist) löschen????

Jede Idee ist wilkommen!!!

Feanor

sschaper
09-03-2001, 00:57
Hallo,

mit grep -n kannst Du auch die Zeilennummer ermitteln. Evtl. helfen Dir dabei auch der Befehl cut.

Diese Zeilennummer kannst Du benutzen, um mit head und tail den Anfang der Datei bis zu den 2 Zeilen und das Ende der Datei nach den 2 Zeilen auszugeben. Diese Ausgabe in eine neue Datei umleiten.

Wenn Du beide Zeilen per grep identifizieren kannst, kannst Du mit grep auch alle Zeilen anzeigen, die das Muster nicht enthalten, also:

cat datei | grep -v muster1 | grep -v muster2

Gruß,

Sebastian

------------------
American Book Center
Sebastian Schaper
Spezialversand für amerikanische und deutsche Literatur
http://ABC.Schaper.com

09-03-2001, 23:10
Hi Feanor

Im vi würde das so aussehen (gehe davon aus, dass sie Datei nereits geladen ist:

:,$/SuchMuster/.,$d

Ich weiß, dass das auch mit dem SED geht, aber wie. Vielleicht hilft mir mal einer auf die Sprünge. Vorteil von SED: Fast beliebig große Dateien können bearbeitet werden.

Wenn man Zeile für Zeile auf ihren Inhalt untersuchen will, bietet sich der awk an.

Hans

09-03-2001, 23:14
Sorry,

da hat mich wohl der Teufel geritten. Die vi-Anweisung löscht nähmlich die ganze Datei! (das ist das M$-Modell!)

Wenn die gefundene Zeile plus die darauffolgende gelöscht werden soll muss es so aussehen:

:1,$g/SuchMuster/.,+1d

Hans

10-03-2001, 13:21
mit sed geht es so:
(Loesche Zeile die Suchmuster entaehlt und die darauf folgende)

sed -e "/Suchmuster/b1;b;:1 N;d"