• Apfeltalk ändert einen Teil seiner Allgemeinen Geschäftsbedingungen (AGB), das Löschen von Useraccounts betreffend.
    Näheres könnt Ihr hier nachlesen: AGB-Änderung
  • Was gibt es Schöneres als den Mai draußen in der Natur mit allen Sinnen zu genießen? Lasst uns teilhaben an Euren Erlebnissen und macht mit beim Thema des Monats Da blüht uns was! ---> 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.520
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