sed: Text ersetzen mit variablen

Diskutiere sed: Text ersetzen mit variablen im Shell-Skripte Forum im Bereich Programmieren unter Linux/Unix; Hallo allerseits! Wollte mir ein Script schreiben, welches einen bestimmten String in einem Textfile mit einem anderen ersetzt. An und für...

  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

    Anzeige

    Wenn du mehr über Linux erfahren möchtest, dann solltest du dir mal folgende Shellkommandos anschauen.


    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. 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
     
  9. #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. sed variablen

    ,
  2. bash sed variablen als text

    ,
  3. sed variablen ersetzen

    ,
  4. sed variable,
  5. sed ersetzen variable,
  6. sed variable ersetzen,
  7. sed suchen ersetzten,
  8. sed ersetze string,
  9. bash sed text ersetzen,
  10. sed ersetzen durch variable,
  11. linux sed text ersetzen,
  12. sed string ersetzen skript,
  13. linux sed replace string,
  14. sed variablen einfügen,
  15. sed variablen auflösen,
  16. linux sed Zeichen mit leerzeichen ersetzen,
  17. sed text in file ersetzen,
  18. bash sed zeile finden und ersetzen,
  19. sed und variablen,
  20. linux datei platzhalter ersetzen,
  21. string in file ersetzen C shell,
  22. linux bash string in andere,
  23. linux sed replace string in files,
  24. bash teilstring aus variable ersetzen,
  25. bash variablen aus anderen dateien auflösen
Die Seite wird geladen...

sed: Text ersetzen mit variablen - Ähnliche Themen

  1. 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...
  2. 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...
  3. Mit sed Dateistellen und finden und mit markiertem Text ersetzen

    Mit sed Dateistellen und finden und mit markiertem Text ersetzen: Hi Gemeinde, ich habe 2 Dateien, ein "Konstrukt" in HTML, eine CSV mit Daten und Zeilenköpfen. In Datei HTML steht zBsp. "PRODUKT1.." - eine...
  4. Text ersetzen - (schon wieder - ich weiß)

    Text ersetzen - (schon wieder - ich weiß): Moin Forum, ich muss in einer Datei wenn Bedingung A und B erfüllt ist, einen Wert in einer bestimmten Spalte ändern. Genauer: Wenn in der 1....
  5. sed: Text mit einzelnen Hochkommata ersetzen

    sed: Text mit einzelnen Hochkommata ersetzen: Hi, das folgende möchte ich unter cygwin mit der bash machen: Der Originaltext stammt aus einer Mediawiki-Seite. Es handelt sich um Text,...
  1. Diese Seite verwendet Cookies um Inhalte zu personalisieren. Außerdem werden auch Cookies von Diensten Dritter gesetzt. Mit dem weiteren Aufenthalt akzeptierst du diesen Einsatz von Cookies.
    Information ausblenden