• Apfeltalk ändert einen Teil seiner Allgemeinen Geschäftsbedingungen (AGB), das Löschen von Useraccounts betreffend.
    Näheres könnt Ihr hier nachlesen: AGB-Änderung
  • Viele hassen ihn, manche schwören auf ihn, wir aber möchten unbedingt sehen, welche Bilder Ihr vor Eurem geistigen Auge bzw. vor der Linse Eures iPhone oder iPad sehen könnt, wenn Ihr dieses Wort hört oder lest. Macht mit und beteiligt Euch an unserem Frühjahrsputz ---> 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?
 

MacAlzenau

Golden Noble
Registriert
26.12.05
Beiträge
22.501
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?
 

koksnutte

Ribston Pepping
Registriert
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
 

Rastafari

deaktivierter Benutzer
Registriert
10.03.05
Beiträge
18.150
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]
 

pepi

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