Lieber Besucher, herzlich willkommen bei: Linux Forum Linux-Web.de.
Falls dies Ihr erster Besuch auf dieser Seite ist, lesen Sie sich bitte die Hilfe durch. Dort wird Ihnen die Bedienung dieser Seite näher erläutert.
Darüber hinaus sollten Sie sich registrieren, um alle Funktionen dieser Seite nutzen zu können.
Benutzen Sie das Registrierungsformular, um sich zu registrieren oder informieren Sie sich ausführlich über den Registrierungsvorgang.
Falls Sie sich bereits zu einem früheren Zeitpunkt registriert haben, können Sie sich hier anmelden.
Shell-Skript: Wie Pfade in Dateien ersetzen?
Hallo, ich beiße mir an einem (anscheinend) trivialen Problem die Zähne aus.
Aufgabe: in einer (Text-)Konfigurationsdatei sollen Pfade durch den Inhalt der Variable $HOME ersetzt werden, z.B.:
($HOME enthält als Beispiel /home/usr/mike)
...
/usr/bin/gs blablabla
...
soll ersetzt werden durch:
...
/home/usr/mike/bin/gs blablabla
...
Ich wollte das mit sed machen, aber die / in $HOME machen da natürlich einen Strich durch die Rechnung. Auch meine Versuche, die / in $HOME mittels awk/gsub zu escapen (also umzuschreiben in \/home\/usr\/mike) schlugen fehl.
Das scheint doch eine häufige und einfache Aufgabe zu sein, aber selbst umfangreiches googeln brachte keine Lösung.
Hat jemand dafür eine Lösung parat?
Gruß
Jochen
RE: Shell-Skript: Wie Pfade in Dateien ersetzen?
Auch das wurde in diesem Board schon einige Male anhand von Beispielen erklaert.
RE: Shell-Skript: Wie Pfade in Dateien ersetzen?
Es ist ja nicht so, dass ich nicht schon die Suchfunktion bemüht hätte, aber unter "Pfad ersetzten" oder "Pfade ersetzen" finde ich nur ein Posting (
string aus textfile auslesen, diesen in anderen textfiles ersetzen), wo es ebenfalls keine Antwort gibt.
Wenn es doch schon ein paar Lösungen dazu gibt, wie wäre es mit einem Link auf eine funktionierende Lösung?
Gruß
Jochen
Also mit "sed ersetzen" hab ich einige Loesungen gefunden.
Also, ich habe alle Suchergebnisse von "sed ersetzen" durchgearbeitet, jedoch keines für die Lösung meines Problems gefunden.
Entweder ich habe Tomaten auf den Augen, habe mich völlig unklar ausgedrückt oder bin im falschen Forum.
Prinzipiell suche eine eine funktionierende Alternative zu:
sed "s/\/usr\/bin\/gs/$HOME\/bin\/gs/g" delegates.mgk > 1.mgk
(was ja wegen der Slashes in $HOME nicht funktioneren kann)
Gruß
Jochen
Falsch verstanden. Du musst die Variable in Hochkommata setzen und anstelle des Slashes kannst Du einen anderen Trenner verwenden; ich nehm einfach einen Doppelpunkt
|
Quellcode
|
1
|
echo $HOME | sed 's:'$HOME':'${HOME}/bin':'
|
Cool, genau was ich brauchte... das mit den alternativen Trennzeichen wusste ich nicht, macht mir jetzt aber die Sache viel leichter.
Nochmals vielen Dank!
Jochen