sed: wie ^ oder ' maskieren?

Vom einfachen Programm zum fertigen Debian-Paket, Fragen rund um Programmiersprachen, Scripting und Lizenzierung.
Antworten
Hans-Wilhelm
Beiträge: 332
Registriert: 07.06.2007 20:01:12

sed: wie ^ oder ' maskieren?

Beitrag von Hans-Wilhelm » 13.12.2009 15:57:33

Ich möchte in einer Datei mehrere Wörter bzw. Zeichen löschen. Unter anderem eine Zeichenfolge die ein ^ enthält und eine die ein ' enthält.

Code: Alles auswählen

sed -e 's/^$third-party//g' -e 's/'term//g'
Leider endet das in einer Fehlermeldung. Wie verpacke ich diese Zeich sed konform?
Zuletzt geändert von Danielx am 13.12.2009 23:37:47, insgesamt 1-mal geändert.
Grund: Code-Tags hinzugefügt

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

Re: sed: wie ^ oder ' maskieren?

Beitrag von Meillo » 13.12.2009 16:17:08

Am besten jedes Problem für sich angehen.

`^' muss in der RegExp escaped werden (mit Backslash) um es literal zu matchen. (`$' vermutlich auch, aber evtl. ist das auch nur am Ende der RegExp speziell, das weiß ich leider nicht mehr. Schaden tut's jedenfalls nicht.)

Code: Alles auswählen

sed -e 's/\^\$third-party//g'
Der Single-Quote ist muss vor der Shell geschützt werden. Das ist also eine andere Baustelle. Das lässt sich am Besten durch verkettete Strings lösen.

Code: Alles auswählen

sed -e 's/'"'"'term//g'
Also vom Prinzip her: 'foo' "single-quote" 'bar'. Alternativ kannst du den ganzen String auch in Double-Quotes verpacken, musst dann aber schauen dass sonst nichts expandiert wird. Da dies meist komplizierter ist, lieber die String-Verkettung wählen.
Use ed once in a while!

Hans-Wilhelm
Beiträge: 332
Registriert: 07.06.2007 20:01:12

Re: sed: wie ^ oder ' maskieren?

Beitrag von Hans-Wilhelm » 13.12.2009 19:25:27

Danke für die Hilfe.

Kann mir jetzt vielleicht noch jemand sagen, wie ich Zeilen lösche, die mit einem ! beginnen?

Das

Code: Alles auswählen

sed -e 's/!.*$//'
löscht mir zwar den Inhalt der Zeile, aber es bleibt eine Leerzeile übrig. Wie lösche ich den Inhalt + Leerzeile?
Zuletzt geändert von Danielx am 13.12.2009 23:37:41, insgesamt 1-mal geändert.
Grund: Code-Tags hinzugefügt

Benutzeravatar
GoKi
Beiträge: 2068
Registriert: 04.07.2003 23:08:56
Lizenz eigener Beiträge: MIT Lizenz

Re: sed: wie ^ oder ' maskieren?

Beitrag von GoKi » 13.12.2009 19:49:57

Code: Alles auswählen

sed '/^!/d'
MfG GoKi
:wq

Hans-Wilhelm
Beiträge: 332
Registriert: 07.06.2007 20:01:12

Re: sed: wie ^ oder ' maskieren?

Beitrag von Hans-Wilhelm » 13.12.2009 20:30:08

GoKi :hail:

chrisbra
Beiträge: 122
Registriert: 19.10.2005 09:36:09
Wohnort: Sachsen-Anhalt
Kontaktdaten:

Re: sed: wie ^ oder ' maskieren?

Beitrag von chrisbra » 14.12.2009 09:59:42

GoKi hat geschrieben:

Code: Alles auswählen

sed '/^!/d'
alternativ:

Code: Alles auswählen

sed '/^[^!]/!d'
Zuletzt geändert von Danielx am 14.12.2009 10:47:12, insgesamt 1-mal geändert.
Grund: Code-Tags hinzugefügt
Meine Whishlist
:wq!

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

Re: sed: wie ^ oder ' maskieren?

Beitrag von Meillo » 14.12.2009 11:58:23

chrisbra hat geschrieben:alternativ:

Code: Alles auswählen

sed '/^[^!]/!d'
Mir fehlt der Smilie bei deinem Post, denn es muss ironisch gemeint sein.
Use ed once in a while!

Antworten