[gelöst]sed

Vom einfachen Programm zum fertigen Debian-Paket, Fragen rund um Programmiersprachen, Scripting und Lizenzierung.
Antworten
mentex
Beiträge: 5
Registriert: 05.02.2018 15:44:29

[gelöst]sed

Beitrag von mentex » 05.02.2018 15:48:10

Hallo zusammen,

ich brauche ein script und komme nicht weiter.
Ich möchte den Inhalt einer Datei mit sed verändern.

Anforderung ist das alles in der Datei gelöscht werden soll, außer wenn ein bestimmter Ausdruck in der Zeile vorhanden ist.
Wenn dieser Ausdruck in der Zeile vorkommt, soll diese Zeile und die darunter NICHT gelöscht werden.

Wie kann ich sowas machen?
Danke für eure Hilfe..

Viele Grüße
Zuletzt geändert von mentex am 05.02.2018 23:10:12, insgesamt 1-mal geändert.

Benutzeravatar
MSfree
Beiträge: 10752
Registriert: 25.09.2007 19:59:30

Re: sed

Beitrag von MSfree » 05.02.2018 16:00:22

mentex hat geschrieben: ↑ zum Beitrag ↑
05.02.2018 15:48:10
Ich möchte den Inhalt einer Datei mit sed verändern.
Warum sed?

Code: Alles auswählen

grep -v Ausdruck Eingabedatei > Ausgabedatei
macht das sehr einfach ohne das regular Expressions Gedöns von sed.

mentex
Beiträge: 5
Registriert: 05.02.2018 15:44:29

Re: sed

Beitrag von mentex » 05.02.2018 16:05:42

womit ist mir relativ egal :-)

danke!
Wie nehme ich die nächste Zeile noch mit?

Benutzeravatar
Meillo
Moderator
Beiträge: 8813
Registriert: 21.06.2005 14:55:06
Wohnort: Balmora
Kontaktdaten:

Re: sed

Beitrag von Meillo » 05.02.2018 16:10:24

mentex hat geschrieben: ↑ zum Beitrag ↑
05.02.2018 16:05:42
Wie nehme ich die nächste Zeile noch mit?
-A 1
Use ed once in a while!

mentex
Beiträge: 5
Registriert: 05.02.2018 15:44:29

Re: sed

Beitrag von mentex » 05.02.2018 16:40:24

grep -v macht leider genau das Gegenteil.
Es löscht den Ausdruck und erstellt eine neue Datei.

Ich möchte aber das die Zeile +1 behalten wird in der dieser Ausdruck steht.

Benutzeravatar
Meillo
Moderator
Beiträge: 8813
Registriert: 21.06.2005 14:55:06
Wohnort: Balmora
Kontaktdaten:

Re: sed

Beitrag von Meillo » 05.02.2018 17:03:43

mentex hat geschrieben: ↑ zum Beitrag ↑
05.02.2018 16:40:24
grep -v macht leider genau das Gegenteil.
Dann lass das `-v' weg. ;-) :-P
Es löscht den Ausdruck und erstellt eine neue Datei.
Du kannst natuerlich eine neue Datei erstellen und mit der die alte Ueberschreiben:

Code: Alles auswählen

grep -A 1 "Magisches Wort" in >out
mv out in
Ich möchte aber das die Zeile +1 behalten wird in der dieser Ausdruck steht.
Hier hast du sed-Code (der nur mit sed-Implementierungen funktioniert, die `-i' verstehen):

Code: Alles auswählen

sed -i -n '/Magisches Wort/,/^/p' datei
Use ed once in a while!

mentex
Beiträge: 5
Registriert: 05.02.2018 15:44:29

Re: sed

Beitrag von mentex » 05.02.2018 18:19:03

:-)
magisches Wort ist super ..

hat geklappt..
wie kann ich mehrere magische Wörter angeben?

Also "Ausdruck1" "Ausdruck2" "Ausdruck3".

Edit: Schon gut.. Blöde Frage.. Ich führe es einfach 2x aus in einem Skript

Benutzeravatar
Meillo
Moderator
Beiträge: 8813
Registriert: 21.06.2005 14:55:06
Wohnort: Balmora
Kontaktdaten:

Re: sed

Beitrag von Meillo » 05.02.2018 19:09:31

mentex hat geschrieben: ↑ zum Beitrag ↑
05.02.2018 18:19:03
wie kann ich mehrere magische Wörter angeben?
Bei der grep-Variante, indem du egrep(1) verwendest und die verschiedenen magischen Worte durch Pipe-Symbole (`|') trennst.

Bei der sed-Variante in portabler Weise gar nicht und fuer die unportable Loesung muss dir jemand anderes helfen.
Use ed once in a while!

mentex
Beiträge: 5
Registriert: 05.02.2018 15:44:29

Re: sed

Beitrag von mentex » 05.02.2018 21:06:40

Vielen Dank..
Hat alles geklappt..

Benutzeravatar
Meillo
Moderator
Beiträge: 8813
Registriert: 21.06.2005 14:55:06
Wohnort: Balmora
Kontaktdaten:

Re: sed

Beitrag von Meillo » 05.02.2018 21:10:10

mentex hat geschrieben: ↑ zum Beitrag ↑
05.02.2018 21:06:40
Vielen Dank..
Hat alles geklappt..
Sehr gerne.

Wenn du jetzt noch deinen ersten Post in diesem Thread bearbeitest, dann kannst du dort ein ``[gelöst]'' in den Titel schreiben, so dass die Mitleser im Forum gleich sehen, dass dieses Thema bereits eine Antwort gefunden hat. Das waere nett.
Use ed once in a while!

Antworten