sed in skript

Vom einfachen Programm zum fertigen Debian-Paket, Fragen rund um Programmiersprachen, Scripting und Lizenzierung.
Antworten
firestonez
Beiträge: 73
Registriert: 23.03.2004 11:14:19

sed in skript

Beitrag von firestonez » 01.06.2006 08:38:52

Hallo,

ich habe in meinem bash-Skript 2 Variablen:

Code: Alles auswählen

SUCHE=bla
ERSETZEN=neuerString
Jetzt möchte ich

Code: Alles auswählen

sed -i 's/'"$SUCHE"'/'"$ERSETZEN"'/g' $datei
ausführen, geht aber nicht:

Code: Alles auswählen

sed: -e expression #1, char 30: unknown option to `s'
Wenn ich nur

Code: Alles auswählen

sed -i 's/'"$SUCHE"'/$ERSETZEN/g' $datei
eintrage, steht $ERSETZEN in der Datei.
Ich habe auch schon $($ERSETZEN) etc. ausprobiert. Bin ein wenig ratlos... :cry:

Weiß jemand Rat?

Danke im voraus...
Timo

Benutzeravatar
meandtheshell
Beiträge: 4054
Registriert: 14.01.2005 17:51:30

Beitrag von meandtheshell » 01.06.2006 08:47:20

Code: Alles auswählen

sed -i "s/$SUCHE/$ERSETZEN/g" $datei
markus

firestonez
Beiträge: 73
Registriert: 23.03.2004 11:14:19

Beitrag von firestonez » 01.06.2006 08:52:29

Leider geht das auch nicht.

Das Problem könnte natürlich sein, dass in der Variablen ein Pfad drin steht (fällt mir dabei mal so auf) :roll:

also eher folgendes Beispiel:

Code: Alles auswählen

SUCHE=./meinDateiname
ERSETZEN=./meinNeuerDateiname
Muss ich die Werte in den Variablen erst escapen?

Benutzeravatar
Savar
Beiträge: 7174
Registriert: 30.07.2004 09:28:58
Lizenz eigener Beiträge: MIT Lizenz
Wohnort: Berlin

Beitrag von Savar » 01.06.2006 10:23:20

ja du musst escapen...
MODVOICE/MYVOICE
Debianforum Verhaltensregeln
Log Dateien? -> NoPaste

firestonez
Beiträge: 73
Registriert: 23.03.2004 11:14:19

Beitrag von firestonez » 01.06.2006 10:43:57

Es geht !!!
Danke Euch beiden!

Auch wenns etwas umständlich ist :lol:

Benutzeravatar
Duff
Beiträge: 6321
Registriert: 22.03.2005 14:36:03
Wohnort: /home/duff

Beitrag von Duff » 01.06.2006 11:08:18

Wie sieht die Lösung denn jetzt im einzelnen aus?

Würde mich nämlich auch mal interessieren!
Oh, yeah!

Benutzeravatar
Joghurt
Beiträge: 5244
Registriert: 30.01.2003 15:27:31
Wohnort: Hamburg
Kontaktdaten:

Beitrag von Joghurt » 01.06.2006 11:21:04

Wieso escapen? Du kannst auch einfach ein anderes Trennzeichen nehmen:

Code: Alles auswählen

sed -i 's#$SUCHEN#$ERSETZEN#'
Statt # geht natürlich auch €, °, ^ oder was auch immer.

firestonez
Beiträge: 73
Registriert: 23.03.2004 11:14:19

Beitrag von firestonez » 01.06.2006 12:13:40

Joghurt: cool, gut zu wissen... :P
Danke

Benutzeravatar
Savar
Beiträge: 7174
Registriert: 30.07.2004 09:28:58
Lizenz eigener Beiträge: MIT Lizenz
Wohnort: Berlin

Beitrag von Savar » 01.06.2006 12:20:07

Joghurt hat geschrieben:Wieso escapen? Du kannst auch einfach ein anderes Trennzeichen nehmen:

Code: Alles auswählen

sed -i 's#$SUCHEN#$ERSETZEN#'
Statt # geht natürlich auch €, °, ^ oder was auch immer.
und wenn eine ( oder ein . oder ein [ im Dateinamen ist.. dann interessiert das "sed" ja auch <ironie>überhaupt nicht</ironie>

naja.. man sollte immer alles bedenken
MODVOICE/MYVOICE
Debianforum Verhaltensregeln
Log Dateien? -> NoPaste

Benutzeravatar
Joghurt
Beiträge: 5244
Registriert: 30.01.2003 15:27:31
Wohnort: Hamburg
Kontaktdaten:

Beitrag von Joghurt » 01.06.2006 12:52:57

Oops.

Mehr Kaffe!

Antworten