Sie sind nicht angemeldet.

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.

1

03.03.2007, 13:44

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

strcat

Unix Gladiator

  • »strcat« ist männlich

Beiträge: 2 331

Wohnort: /Earth/Germany/Bavaria/Regensburg

  • Nachricht senden

2

03.03.2007, 14:07

RE: Shell-Skript: Wie Pfade in Dateien ersetzen?

Auch das wurde in diesem Board schon einige Male anhand von Beispielen erklaert.
Christian 'strcat' Schneider <http://www.strcat.de/>
/* When all else fails, read the instructions. */

3

03.03.2007, 14:27

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

strcat

Unix Gladiator

  • »strcat« ist männlich

Beiträge: 2 331

Wohnort: /Earth/Germany/Bavaria/Regensburg

  • Nachricht senden

4

03.03.2007, 15:05

Also mit "sed ersetzen" hab ich einige Loesungen gefunden.
Christian 'strcat' Schneider <http://www.strcat.de/>
/* When all else fails, read the instructions. */

5

03.03.2007, 15:34

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

strcat

Unix Gladiator

  • »strcat« ist männlich

Beiträge: 2 331

Wohnort: /Earth/Germany/Bavaria/Regensburg

  • Nachricht senden

6

03.03.2007, 15:55

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':'
Christian 'strcat' Schneider <http://www.strcat.de/>
/* When all else fails, read the instructions. */

7

03.03.2007, 16:17

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

Thema bewerten