Strings ersetzen

M

MrBourne

Grünschnabel
Hallo zusammen,

ich möchte in einer oder mehreren Dateien einen vorgegebenen String durch einen anderen String ersetzen.
Eine Datei sieht z.B. wie folgt aus :
#testdatei
name='test'
name1=test
name2="test"
#END

Das Skript soll nur 'test' durch 'test1' ersetzen. name1 und name2 sollen
aber nicht geändert werden!

sed 's/'test'/'test1'/g' < datei > datei.neu

funktioniert leider nicht.

sed 's/"'test'"/"'test1'"/g' < datei > datei.neu
oder
sed 's/\'test\'/\'test1\'/g' < datei > datei.neu

leider auch nicht.
Mit tr bekomme ich es irgenwie auch nicht hin.
Da ich eigentlich aus der MS-Ecke komme, bin ich mit dem Quoting und
regulären Ausdrücke noch nicht so wirklich fit.
Vielleicht kann mir jemand auf die Sprünge helfen.
Besten Dank schon einmal.

Gruß
 
Hallo

Warum nicht einfach so?
sed -e 's/test/test1/g' datei > datei.neu

tr kann nur einzelne Zeichen ersetzen/löschen.

Gruß Wolfgang

Edit:
wenn du wirklich die Hochkomma mit einfangen willst ( was ich in deinem Beispiel aber für übeflüssig gehalten habe) dann wird es etwas tricky:
;)
sed -e 's/'\''test'\''/'\''test1'\''/g'
oder einfache in doppelte:
sed -e 's/'\''test'\''/'\"'test1'\"'/g'
 
Zuletzt bearbeitet:
Hallo Wolfgang,

danke erst einmal für die schnelle Antwort.

sed -e 's/test/test1/g' datei > datei.neu

würde aber jedes test ersetzen. Es soll aber nur 'test' ersetzt werden
(test oder "test" sollen nicht angerührt werden).

Gruß
MrBourne
 
Hallo
Hoffe mein EDIT des ersten Beitrages war das was du wolltest.
Nochmal für 'test'
sed -e 's/'\''test'\''/'\''test1'\''/g'
Hier noch für die "test"
sed -e 's/'\"'test'\"'/'\"'test1'\"'/g'

HTH
Gruß Wolfgang
 
Hallo Wolfgang,

das 2. Beispiel für die "test" läuft.
Das 1. für 'test' ersetzt aber auch nur die "test".

Das würde ja auch einfacher mit sed -e 's/\"test\"/\"test1\"/g' laufen.

Gruß
MrBourne
 
Hallo
Sicher hast du da einen Fehler drin.
Das rote sind zwei Hochkomma (2* ') und nicht ein doppeltes "!
sed -e 's/'\''test'\''/'\''test1'\''/g'

Gruß Wolfgang
PS Kopier das mal, dann wirst du es sehen.
 
Hallo Wolfgang,

tja man muss es nur richtig machen und schon geht es :)
Aber wie gesagt, solange beschäftige ich mich mit dem Thema
noch nicht.

Thanx noch einmal für die superschnelle und kompetente Hilfe ....

Gruß
MrBourne
 

Ähnliche Themen

Suchen und Ersetzen mit regulärem Ausdruck

hilfe bei sed

Mehrzeiligen String mittels sed ersetzen

Hilfe bei bash - Shellscript gesucht: zusammengehörende Strings in Konfigdatei

suchen und ersetzen, Format erhalten

Zurück
Oben