Hallo Gemeinde
das file0 enthält:
...
blah blah blupp blah
bla STRING blupp
...
diese Varianble setze ich
lnk="aaa&b=zahl&c=zahl"
Mit sed -e 's/STRING/${lnk}/' file0 >file1 versuche ich STRING durch den Variableninhalt zu ersetzen und in file1 zu speichern.
Das klappt nur "halb":
cat file1:
...
blah blah blupp blah
bla aaaSTRINGb=zahlSTRINGc=zahlSTRING blupp
...
sed fügt dem Inhalt von lnk anstelle "&" das zu ersetzende STRING ein.
Was mach ich da falsch ?
Bitte um Tipps
Danke.
Gruß root2root
[gelöst] sed stringverarbeitung
Re: sed stringverarbeitung
Das & ist ein Metazeichen in sed, eben mit der Bedeutung, dass an der Stelle der zu ersetzende String eingefügt wird (was z.B. praktisch von Nutzen sein kann, wenn man einen anderen String nur anhängen möchte)
Du kannst das & mit einem \ maskieren:
Du kannst das & mit einem \ maskieren:
Code: Alles auswählen
lnk="aaa\&b=zahl\&c=zahl"
Re: sed stringverarbeitung
sed ist fuer stupide String-Ersetzung leider viel zu intelligent, das Problem koennte man mit wildem Escapen loesen, wie in [1] (fuer den linken Teil). Fuer den mittleren Teil des s/// braucht allerdings nur & und \ (sowie der Trenner, also meist /) mit einem Backslash escapt werden. Zumindest faellt mir auf Anhieb nicht mehr ein.
Gruss Cae
[1] viewtopic.php?p=944509#p944509
Gruss Cae
[1] viewtopic.php?p=944509#p944509
If universal surveillance were the answer, lots of us would have moved to the former East Germany. If surveillance cameras were the answer, camera-happy London, with something like 500,000 of them at a cost of $700 million, would be the safest city on the planet.
—Bruce Schneier
Re: sed stringverarbeitung
@ 4A4B
habs so gelöst:
-maskiertes &-
lnk="aaa&b=zahl&c=zahl"
lnk=$(echo ${lnk//"&"/"\&"})
# echo $lnk
aaa\&b=zahl\&c=zahl
Das kann sed problemlos verarbeiten:
cat file1:
...
blah blah blupp blah
bla aaa&b=zahl&c=zahl blupp
...
Danke an alle
Gruß root2root
habs so gelöst:
-maskiertes &-
lnk="aaa&b=zahl&c=zahl"
lnk=$(echo ${lnk//"&"/"\&"})
# echo $lnk
aaa\&b=zahl\&c=zahl
Das kann sed problemlos verarbeiten:
cat file1:
...
blah blah blupp blah
bla aaa&b=zahl&c=zahl blupp
...
Danke an alle
Gruß root2root