1. Diese Seite verwendet Cookies. Wenn du dich weiterhin auf dieser Seite aufhältst, akzeptierst du unseren Einsatz von Cookies. Weitere Informationen

sed Substitutionsproblem

Dieses Thema im Forum "Unix & Terminal" wurde erstellt von Zettt, 27.06.09.

  1. Zettt

    Zettt Doppelter Melonenapfel

    Dabei seit:
    16.10.05
    Beiträge:
    3.374
    Hi,

    Folgendes Script (teil eines anderen scripts):
    Code:
    #!/bin/sh
    file="test 1.txt"
    file=`echo $file | sed -e 's/ /\\ /'`
    echo $file
    Funktioniert nicht. Ich moechte gerne das Leerzeichen beziehungsweise alle Leerzeichen durch ein "\ " ersetzen. Damit die Dateinamen und Pfade auch Shell kompatibel sind. Wie macht man denn sowas?
    Gibts dafuer nicht schon ene eingebaut Funktion?

    PS: Ist das ueberhaupt noch die korrekte Schreibweise?
     
  2. MacAlzenau

    MacAlzenau Golden Noble

    Dabei seit:
    26.12.05
    Beiträge:
    19.398
    Ohne fundierte UNIX- und Terminalkenntnisse wäre mein erster Verdacht (den ich nur äußere, weil um die Uhrzeit kein/e Kompetenete/r mehr da ist): In der dritten Zeile benutzt du mal Akzente (accent grave) mal halbwegs richtige Apostrophen. Ist das bei Terminaleingaben korrekt?
     
  3. koksnutte

    koksnutte Ribston Pepping

    Dabei seit:
    13.04.05
    Beiträge:
    299
    Code:
    #!/bin/sh
    file="test 1.txt"
    file=`echo $file | sed -e 's/ /\\ /'`
    echo $file
    ist das jetz nur zum testen oder arbeitest du wirklich mit den umgebungsvariablen ($file)?
    deine regex für sed ist korrekt (es fehlt evtl. das g flag am ende), aber ich weiß nicht so recht wie das ganze in deinem script aussieht...

    probier das hier mal:

    sed -e 's/ /\\ /g' test > test2

    "test" ist die ursprüngliche textdatei die (ich geh mal davon aus) deine pfade beinhaltet, "test2" ist die ausgabe datei bei der ein \ vor jedes leerzeichen gestellt wird.

    hier wird sed sehr schön erklärt:
    http://www.grymoire.com/Unix/Sed.html#uh-6
     
  4. Rastafari

    Rastafari Golden Noble

    Dabei seit:
    10.03.05
    Beiträge:
    17.896
    Code:
    file="test 1.txt"
    file=`echo [COLOR="Red"]"[/COLOR]$file[COLOR="Red"]"[/COLOR] | sed -e 's/ /\\[COLOR="Red"]\\[/COLOR] /[COLOR="Red"]g[/COLOR]'`
    echo $file
    Code:
    file="test 1.txt"
    echo [COLOR="Red"]"[/COLOR]$file[COLOR="Red"]"[/COLOR]
     
  5. Zettt

    Zettt Doppelter Melonenapfel

    Dabei seit:
    16.10.05
    Beiträge:
    3.374
  6. pepi

    pepi Cellini

    Dabei seit:
    03.09.05
    Beiträge:
    8.741
    Nur zur Ergänzung, heutzutage sollte man Backticks durch die modernere und lesbarere $(foo) Schreibweise ersetzen.
    Gruß Pepi
     

Diese Seite empfehlen