variable zuweisen mit sed

Vom einfachen Programm zum fertigen Debian-Paket, Fragen rund um Programmiersprachen, Scripting und Lizenzierung.
Antworten
latenite
Beiträge: 688
Registriert: 14.05.2007 01:04:23

variable zuweisen mit sed

Beitrag von latenite » 23.11.2009 03:03:04

hallo leute

viellleicht ist es schon zu spääät aber ich kann hier eine variable nicht merh zuweisen?

Wieso?

Code: Alles auswählen

0:577:kai@desktop ~ [0]$ mountpoint=/media/disk
0:578:kai@desktop ~ [0]$ echo $mountpoint | sed 's/\//\\/g'
\media\disk
0:579:kai@desktop ~ [0]$ var=`echo $mountpoint | sed 's/\//\\/g'`
sed: -e Ausdruck #1, Zeichen 8: Nicht beendeter `s'-Befehl
0:580:kai@desktop ~ [1]$ 
normal sollte in "var" einfach "\media\disk" stehen?

danke

Benutzeravatar
ThorstenS
Beiträge: 2875
Registriert: 24.04.2004 15:33:31

Re: variable zuweisen mit sed

Beitrag von ThorstenS » 23.11.2009 06:44:07

Das geht auch mit der bash:

Code: Alles auswählen

$ mountpoint=/media/disk
$ MP=${mountpoint%.=} ; echo $MP
/media/disk
Wenn es unbedingt sed sein soll:

Code: Alles auswählen

$ echo "mountpoint=/media/disk" | sed 's#mountpoint=##'
/media/disk
Wenn du den Wert aus einer Textdatei lesen willst:

Code: Alles auswählen

sed -n '/mountpoint/{s#mountpoint=##;p}' datei
Das ginge natürlich auch mit awk:

Code: Alles auswählen

awk -F= '/mountpoint/{print $2}' datei
oder mit egrep

Code: Alles auswählen

egrep ^mountpoint datei | cut -d= -f2
Und ein Tipp:
Nimm in sed nicht / sondern # - dann mußt du nichts escapen

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

Re: variable zuweisen mit sed

Beitrag von Duff » 23.11.2009 08:01:14

So sollte es in deinem Beispiel funktionieren:

Code: Alles auswählen

duff@beer:~$ var=$(echo $mountpoint | sed 's/\//\\/g')
Wobei ich die Vorschlägevon ThorstenS besser finde.
Oh, yeah!

Benutzeravatar
heinz
Beiträge: 535
Registriert: 20.12.2007 01:43:49

Re: variable zuweisen mit sed

Beitrag von heinz » 26.11.2009 19:17:06

Ein:

Code: Alles auswählen

var=$(echo $mountpoint | tr '/' '\\')
oder bei der Ausgabe ersetzen:

Code: Alles auswählen

echo ${mountpoint//\//\\}
dürfte auch gehen.

gruß heinz

Antworten