2017-06-06 9 views
0

ich Cmder unter Windows bin mit und versuchen, die folgende Anweisung auszuführen:sed -e unbekannte Option `s'- Nicht Begrenzer Ausgabe

echo "c:\Sources\" + (echo "Modules/ASR/branches/1.9" | sed -e "s|Modules/||") 

Jedes Mal, wenn ich, dass Befehl ich das lästige Fehler bekommen

sed: -e expression #1, char 13: unknown option to `s' 

Aber wenn ich laufe den sed Befehl auf seine eigene:

(echo "Modules/ASR/branches/1.9" | sed -e "s|Modules/||") 

Es magisch arbeitet. Kann mir jemand erklären, was ich falsch mache?

Anmerkung des Herausgebers: Diese Frage wurde ursprünglich falsch markiert , während das beschriebene Symptom impliziert.

+0

sieht aus wie '' '' ist Ihr Modifier .... Erfinden eine nicht vorhandene Syntax für Ihre Bequemlichkeit ist nicht der Weg zu gehen. –

+0

Müssen Sie Backslashes nicht in Anführungszeichen auf Cmder umkehren? Wie es jetzt aussieht, sind alle deine Zitate durcheinander. – 123

+0

@KarolyHorvath Ich brauche ein bisschen mehr Anstupsen in die richtige Richtung. Durch Ihre Bemerkung verstehe ich, dass ich etwas falsch mache, aber ich habe keine Ahnung, wie ich weitermachen soll. – WeyensL

Antwort

2

Die Fehlermeldung in der Frage ist aufgrund Fenster cmd, die den Befehl mit den | teilen und fügt parenthese ) zu sed Befehl zu schließen.

cmd Äquivalent für "-Kommando substitution" for /f durch Befehl zwischen Hochkommata gefolgt wird, muss Rohr mit ^

for /f %x in ('echo "Modules/ASR/branches/1.9" ^| sed -e "s|Modules/||" ') do @echo "c:\Sources\"%~x 

entkommen oder wenn in Script verwendet die prozentuale muss verdoppelt werden

for /f %%x in ('echo "Modules/ASR/branches/1.9" ^| sed -e "s|Modules/||" ') do @echo "c:\Sources\"%%~x 

Andernfalls ermöglicht die Erweiterung das Ersetzen des Musters %var:pat=repl%

set mypath=Modules/ASR/branches/1.9 
echo "c:\Sources\"%mypath:Modules/=% 

in bash äquivalent

echo 'c:\Sources\'"$(echo "Modules/ASR/branches/1.9" | sed -e "s|Modules/||")" 

auch einen neuen Prozess zu vermeiden, starten diese mit variabler Expansion getan werden können # kürzesten Präfix zu entfernen.

mypath="Modules/ASR/branches/1.9" 
echo 'c:\Sources\'"${mypath//Modules\/}" 
+0

Backticks Unterstützung Verschachtelung ... – 123

+0

@ 123 meinst du 'echo \' echo \\ 'echo ok \\' \ '' –

+0

ja das ist verschachtelt – 123

Verwandte Themen