sed: Text ersetzen mit variablen

Dieses Thema im Forum "Shell-Skripte" wurde erstellt von dampfhammer, 06.07.2006.

  1. #1 dampfhammer, 06.07.2006
    dampfhammer

    dampfhammer Grünschnabel

    Dabei seit:
    06.07.2006
    Beiträge:
    3
    Zustimmungen:
    0
    Hallo allerseits!

    Wollte mir ein Script schreiben, welches einen bestimmten String in einem Textfile mit einem anderen ersetzt.

    An und für sich funktioniert das Script. Jedoch nur solange, bis ich im Suchmuster einen Leerschlag drin habe...
    Wobei die Variable $sedstring (s. Script) den Korrekten Output liefert. Derselbe Befehl auf der Kommandozeile ausgeführt funktioniert auch...

    Hoffe jemand von Euch weiss rat..! :think: Danke & Gruss



    echo "Wo sind die Textfiles abgelegt (/var/named/)?
    "
    read dir
    ls -1 $dir > /tmp/zonefiles
    #
    echo "Welcher Wert soll ersetzt werden?
    "
    read initstring
    echo "Wie lautet der neue Wert?
    "
    read replacestring
    sedstring=""s/$initstring/$replacestring/g""
    for files in `cat /tmp/zonefiles`
    do
    echo "Editiere File $dir/$files
    "
    sed $sedstring $dir/$files
    done && echo "Files erfolgreich angepasst!
    "
    rm /tmp/zonefiles
     
  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. Xanti

    Xanti Mouse Organist

    Dabei seit:
    05.09.2004
    Beiträge:
    1.855
    Zustimmungen:
    0
    Was ist ein Leerschlag? Egal, ersetz mal folgende Zeile

    Code:
    sedstring=""s/$initstring/$replacestring/g""
    
    durch

    Code:
    sedstring="'s/$initstring/$replacestring/g'"
    
    Gruss, Xanti
     
  4. #3 Wolfgang, 06.07.2006
    Wolfgang

    Wolfgang Foren Gott

    Dabei seit:
    24.04.2005
    Beiträge:
    3.978
    Zustimmungen:
    0
    Ort:
    Erfurt
    Hallo
    Wenn du mit Variablen der shell arbeiten willst, darfst du diese nicht in einfache Hochkomma setzen, sonst wird die Variable nicht aufgelöst.
    Code:
    sedstring="s/$initstring/$replacestring/g"
    sed -e "$sedstring"
    
    Gruß Wolfgang
     
  5. Xanti

    Xanti Mouse Organist

    Dabei seit:
    05.09.2004
    Beiträge:
    1.855
    Zustimmungen:
    0
    Hallo Wolfgang, die Wirkung von ' wird innerhalb der Gänsefüsse " aufgehoben:

    Code:
    [~]$ a=123
    [~]$ b="'$a'"
    [~]$ echo $b
    '123'
    
    Gruss, Xanti
     
  6. #5 Wolfgang, 06.07.2006
    Zuletzt bearbeitet: 06.07.2006
    Wolfgang

    Wolfgang Foren Gott

    Dabei seit:
    24.04.2005
    Beiträge:
    3.978
    Zustimmungen:
    0
    Ort:
    Erfurt
    Ups, du hast Recht.
    Hab ich noch nie so benutzt, hab dafür immer andere Lösungen gefunden.

    Gruß Wolfgang (die Hitze raubt mir den Verstand)

    EDIT://
    Zu den möglichen Leerzeichen im Suchstring:
    Verwende für die Parameter für sed einfach ein Array:
    Code:
    VAR1="a b"
    VAR2="A   C"
    REPLACE=(-e "s/$VAR1/$VAR2/g");
    echo "a b cdefg a b"|sed "${REPLACE[@]}"
    A   C cdefg A   C
    
     
  7. #6 dampfhammer, 06.07.2006
    dampfhammer

    dampfhammer Grünschnabel

    Dabei seit:
    06.07.2006
    Beiträge:
    3
    Zustimmungen:
    0
    Hallo Wolfgang
    Klasse, funktioniert bestens - vielen Dank!

    Irgendwie jedoch trotzdem komisch, dass der Output (bei meiner Version) der Variable $sedstring an und fuer sich korrekt ist, es aber dennoch nicht funktioniert..

    @Xanti: Leerschlag = " " ;-)

    Gruss Dampfhammer
     
  8. Anzeige

    Vielleicht findest du HIER Antworten.
    Registrieren bzw. einloggen, um diese und auch andere Anzeigen zu deaktivieren
  9. Xanti

    Xanti Mouse Organist

    Dabei seit:
    05.09.2004
    Beiträge:
    1.855
    Zustimmungen:
    0
    Yep, die Hitze ist echt nervig, besonders hier, da ich unterm Dach hocke. Aber es hat gerade mit regnen angefangen, hoffen wir auf Abkühlung.

    @dampfhammer Nur interessehalber: hat meine Lösung auch funktioniert?

    Gruss, Xanti
     
  10. #8 dampfhammer, 07.07.2006
    dampfhammer

    dampfhammer Grünschnabel

    Dabei seit:
    06.07.2006
    Beiträge:
    3
    Zustimmungen:
    0
    Hallo Xanti
    Ich probierte die Variante schon aus, bevor ich hier postete. Leider funktionierts im Script auch nicht, auf der Kommandozeile jedoch schon...

    Danke dennoch für die Unterstützung!

    Gruss dampfhammer
     
Thema: sed: Text ersetzen mit variablen
Besucher kamen mit folgenden Suchen
  1. linux sed text ersetzen

    ,
  2. shell sed varianle ersätzen

    ,
  3. variable suchen und ersetzen shell

    ,
  4. sed ersetzen durch variable,
  5. linux sed variable in text,
  6. sed replace string_variable,
  7. sed replace string
Die Seite wird geladen...

sed: Text ersetzen mit variablen - Ähnliche Themen

  1. Unterschiedlichen Text in mehrere Dateien finden und löschen / ersetzen

    Unterschiedlichen Text in mehrere Dateien finden und löschen / ersetzen: Moin erstmal, ich suche nach einer Möglichkeit, in mehreren unterschiedlichen Dateien Text mit folgendem Muster zu suchen und zu löschen oder...
  2. Bash-Skript Text suchen und ersetzen mit unterschiedlichen Trennzeichen

    Bash-Skript Text suchen und ersetzen mit unterschiedlichen Trennzeichen: Hallo zusammen, ich habe bereits diverse Google-Suchergebnisse durchforstet, habe jedoch nirgendwo eine verwertbare Lösung für mein Anliegen...
  3. Suchen und ersetzen in einer Textdatei

    Suchen und ersetzen in einer Textdatei: Hallo, unter Umständen nochmal fast das ganze. Also, ich habe ein Problem. Möglicherweise habe ich das nur überlesen, allerdings habe ich heute...
  4. Platzhalter in Textdatei durch den Inhalt einer anderen Datei ersetzen

    Platzhalter in Textdatei durch den Inhalt einer anderen Datei ersetzen: Hallo, gibt es ein Kommando, mit dem ich einen Platzhalter in einer Textdatei durch den kompletten Inhalt einer anderen Textdatei ersetzen kann?...
  5. mehrzeiligen Text per Skript ersetzen

    mehrzeiligen Text per Skript ersetzen: //ERLEDIGT !!! Hallo Ihr alle, ich habe hier ein kleines Problemchen mit dem ersetzen von mehrzeiligem Text per Skript. was ich machen...