sed ersetzt Variable mit nicht mit ihrem Wert

Dieses Thema im Forum "Shell-Skripte" wurde erstellt von FrozenFox, 23.07.2007.

  1. #1 FrozenFox, 23.07.2007
    FrozenFox

    FrozenFox Grünschnabel

    Dabei seit:
    04.07.2006
    Beiträge:
    4
    Zustimmungen:
    0
    Hallo allerseits! :)

    Ich hab mir ein kleines Shell-Script gebastelt, dass bestimmte Wörter in einer Datei durch andere ersetzt. Dazu habe ich sed genommen:
    Code:
    #!/bin/bash
    ...
    sed 's/Basis-Template/$subdomain/g' $template > $filename
    sed 's/subdomain.template.at/$subdomain/g' $template > $filename
    ...
    
    das ganze funktioniert auch so wie es soll :)

    Nur diese Zeile macht nicht was sie soll:
    Code:
    ...
    sed 's/\/www\/docs\/template\/subdomain/$target/g' $template > $filename
    ...
    
    in der Datei wird nämlich /www/docs/template/subdomain durch $target anstatt dem Wert von $target ersetzt.

    Kann mir jemand sagen warum das so ist?

    Vielen Dank im Vorraus für jede Antwort!

    MFG
    FrozenFox
     
  2. Anzeige

    Schau dir mal diese Kategorie an. Dort findest du bestimmt etwas.
    Registrieren bzw. einloggen, um diese und auch andere Anzeigen zu deaktivieren
  3. #2 z-shell, 23.07.2007
    z-shell

    z-shell Debianator

    Dabei seit:
    30.05.2007
    Beiträge:
    434
    Zustimmungen:
    0
    Ort:
    /home/z-shell
    Versuch mal " " statt ' '

    Code:
    sed "s/\/www\/docs\/template\/subdomain/$target/g" $template > $filename
     
  4. #3 Wolfgang, 23.07.2007
    Wolfgang

    Wolfgang Foren Gott

    Dabei seit:
    24.04.2005
    Beiträge:
    3.978
    Zustimmungen:
    0
    Ort:
    Erfurt
    Die Antwort auf das Warum:
    Die einfachen Hochkomma verhindern das Auflösen der Shellvariable durch die Shell. sed wiederum kennt keine SHELL-Variablen.

    Gruß Wolfgang
     
  5. smg

    smg Regex Fetischist

    Dabei seit:
    20.05.2007
    Beiträge:
    195
    Zustimmungen:
    0
    Ort:
    /home/stephan/
    Ist normales Verhalten: ' ' unterdrückt / verhindert Interpolation von Variablen, also nimmst du " ".
     
  6. #5 FrozenFox, 24.07.2007
    FrozenFox

    FrozenFox Grünschnabel

    Dabei seit:
    04.07.2006
    Beiträge:
    4
    Zustimmungen:
    0
    Tja, das hab ich mir auch gedacht, aber aus 2 Gründen kann das so nicht ganz stimmen:

    1)
    Code:
    sed 's/Basis-Template/$subdomain/g' $template > $filename
    sed 's/subdomain.template.at/$subdomain/g' $template > $filename
    
    hier funktioniert es ja auch mit '

    2)
    Code:
    sed "s/\/www\/docs\/template\/subdomain/$target/g" $template > $filename
    
    führt zu bei diesem Aufruf:
    ./test.sh heute.neu.at /www/docs/neu/heute
    diesem Fehler:
    sed: couldn't open file ww/docs/neu/heute/g: No such file or directory

    Wo liegt also wirklich der Fehler? :hilfe:

    MFG
    FrozenFox
     
  7. #6 Schlaubi_fi.de, 24.07.2007
    Schlaubi_fi.de

    Schlaubi_fi.de Mac OS X User

    Dabei seit:
    22.12.2004
    Beiträge:
    304
    Zustimmungen:
    0
    nimm mal sicherheitshalber statt dem / ein anderes Trennzeichen z.B. #
    also 's#/www/huhu/#ersetzung#g'
     
  8. #7 FrozenFox, 24.07.2007
    FrozenFox

    FrozenFox Grünschnabel

    Dabei seit:
    04.07.2006
    Beiträge:
    4
    Zustimmungen:
    0
    Gute Idee! (wusste gar nicht, dass man das Trennzeichen ändern kann)

    Leider ist das Ergebnis von
    Code:
    sed 's#/www/docs/template/subdomain#$target#g' $template > $filename
    
    aber dasgleiche wie
    Code:
    sed 's/\/www\/docs\/template\/subdomain/$target/g' $template > $filename
    
    Sonst noch Vorschläge?

    MFG
    FrozenFox
     
  9. dizzgo

    dizzgo Lernbereite Riesenratte

    Dabei seit:
    04.08.2005
    Beiträge:
    573
    Zustimmungen:
    0
    Ort:
    /ch/sg///
    Verwendest du eine aktuelle 'GNU sed' Version?
    Code:
    $ sed --version
    GNU sed Version 4.1.5
    Copyright (C) 2003 Free Software Foundation, Inc.
    
    Gruss
    d22
     
  10. Anzeige

    Vielleicht findest du HIER Antworten.
    Registrieren bzw. einloggen, um diese und auch andere Anzeigen zu deaktivieren
  11. #9 FrozenFox, 25.07.2007
    FrozenFox

    FrozenFox Grünschnabel

    Dabei seit:
    04.07.2006
    Beiträge:
    4
    Zustimmungen:
    0
    Nicht ganz wie es aussieht, aber kann es echt daran liegen:
    Code:
    sed --version
    GNU sed version 4.1.4
    Copyright (C) 2003 Free Software Foundation, Inc.
    
    MFG
    FrozenFox
     
  12. smg

    smg Regex Fetischist

    Dabei seit:
    20.05.2007
    Beiträge:
    195
    Zustimmungen:
    0
    Ort:
    /home/stephan/
    mach ma sed -e " "
     
Thema:

sed ersetzt Variable mit nicht mit ihrem Wert

Die Seite wird geladen...

sed ersetzt Variable mit nicht mit ihrem Wert - Ähnliche Themen

  1. Ubuntu 16.04 ersetzt Ubuntu Software Center mit Gnome Software

    Ubuntu 16.04 ersetzt Ubuntu Software Center mit Gnome Software: Auf dem in dieser Woche abgehaltenen Ubuntu Online Summit (UOS) wurden Einzelheiten zu Ubuntu 16.04 LTS »Xenial Xerus« bekannt, das im April...
  2. Fedora 22 ersetzt beim Paketmanagement Yum durch DNF

    Fedora 22 ersetzt beim Paketmanagement Yum durch DNF: Im vermutlich am 26. Mai freigegebenen Fedora 22 wird DNF standardmäßig für das Paketmanagement zuständig sein. Das bisher genutzte Yum wird...
  3. Fedora 22 ersetzt beim Paketmanagement Yum mit DNF

    Fedora 22 ersetzt beim Paketmanagement Yum mit DNF: Im vermutlich am 26. Mai freigegebenen Fedora 22 wird DNF standardmäßig für das Paketmanagement zuständig sein. Das bisher genutzte Yum wird...
  4. Text mit mehreren Zeilen und Sonderzeichen ersetzten

    Text mit mehreren Zeilen und Sonderzeichen ersetzten: Hallo zusammen, ich bin in Sachen Programmierung noch relativ neu und frisch unterwegs und bräuchte etwas Unterstützung wenn möglich. Im...
  5. Schweiz: GNU-Lizenzen neu übersetzt

    Schweiz: GNU-Lizenzen neu übersetzt: Der IT-Rechtsspezialist Wolfgang Straub hat die OpenSource-Lizenzen GNU GPL, GNU LGPL und GNU Affero GPL neu übersetzt und an die schweizerische...