• Apfeltalk ändert einen Teil seiner Allgemeinen Geschäftsbedingungen (AGB), das Löschen von Useraccounts betreffend.
    Näheres könnt Ihr hier nachlesen: AGB-Änderung
  • Die Bildungsoffensive hier im Forum geht weiter! Jetzt sollen Kreativität und technische Möglichkeiten einen neue Dimension erreichen. Das Thema in diesem Monat lautet - Verkehrte Welt - Hier geht es lang --> Klick

sed Substitutionsproblem

Zettt

Doppelter Melonenapfel
Registriert
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?
 
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?
 
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
 
Ich moechte gerne das Leerzeichen beziehungsweise alle Leerzeichen durch ein "\ " ersetzen.
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

Damit die Dateinamen und Pfade auch Shell kompatibel sind. Wie macht man denn sowas?Gibts dafuer nicht schon ene eingebaut Funktion?
Code:
file="test 1.txt"
echo [COLOR="Red"]"[/COLOR]$file[COLOR="Red"]"[/COLOR]
 
Nur zur Ergänzung, heutzutage sollte man Backticks durch die modernere und lesbarere $(foo) Schreibweise ersetzen.
Gruß Pepi