Sed für Fenster

17320
TheSavo

Ich versuche, SED zum ersten Mal zu verwenden. Um es zu komplizieren, verwende ich es in Windows. Ich habe von dieser Quelle heruntergeladen . Da ich keine Installationsberechtigungen für meine Arbeitsmaschine habe, habe ich in meinem Profil einen Ordner für ausführbare Dateien erstellt und zu meinem hinzugefügt PATH.

Ich habe Probleme, SED zum ersten Mal zu verwenden. Es schlägt immer mit dem Fehler fehl:

sed: -e expression #1, char 1: unknown command:Ich habe einige verschiedene Samples aus This how to ausprobiert , aber ich kann es einfach nicht bekommen. Ich habe keine andere gefunden, die dieses Problem hat. Was soll ich versuchen? Ich habe versucht, es in Anführungszeichen, Anführungszeichen und Anführungszeichen einzukapseln. Nichts scheint zu helfen.

3
Was genau läuft du? johnny vor 12 Jahren 0
Ich würde cygwin wärmstens empfehlen, die Windows-Shell ist ein PITA für unix-artige Befehle. Wenn Sie jedoch vorhaben, die Windows-Shell beizubehalten, können Sie sed oder awk am einfachsten ausführen, indem Sie eine Skriptdatei erstellen und die Datei dann mit der Markierung -f aufrufen. Zum Beispiel `sed -f some_sed_script.sed` oder` awk -f some_awk_script.awk` SiegeX vor 12 Jahren 0
Können Sie genau das einfügen, was Sie in die Windows-Shell geben? Rob vor 12 Jahren 0
Ich dachte, ich hätte meinen Input aufgenommen. Ich wünschte, ich hätte es getan, weil es jetzt funktioniert, nachdem ich @RedGrittyBrick versucht habe TheSavo vor 12 Jahren 0

2 Antworten auf die Frage

5
grawity

Im Gegensatz zu Unixes führt die Windows-Befehlszeilen-Shell keine Wortaufteilung aus und entfernt die Anführungszeichen nicht. Das Programm erhält nur eine einzige Zeichenfolge, die die gesamte Befehlszeile enthält. Dies bedeutet, dass nicht alle Programme denselben Zitierregeln folgen können.

In diesem Fall unterstützt die GnuWin32-Version von sed nur einen "Anführungsstil - doppelte Anführungszeichen ". In meinen Tests funktioniert zum Beispiel Folgendes:

sed "s/foo/bar/" 

Sie können sedvon Cygwin auch ein umfassenderes Unix-ähnliches System erhalten: Shells, Editoren und andere Tools. Wenn Sie zum Lernen eine Unix-Shell verwenden, ist es einfacher, solche Syntaxprobleme in Zukunft zu vermeiden.

Schlag meinen Cygwin-Kommentar um Sekunden ... :) Rich Homolka vor 12 Jahren 0
Vielen Dank. Bietet _CygWin_ eine Nichtinstallation an? Ich habe mit "" doppelten Anführungszeichen versucht und immer noch keine Freude. TheSavo vor 12 Jahren 0
@TheSavo löscht einfach das Verzeichnis. Es gibt einige Registry-Einträge, die sich auf Cygwin-Mounts beziehen, diese können jedoch ignoriert werden, nur Cygwin liest sie Rich Homolka vor 12 Jahren 0
4
RedGrittyBrick
C:\>sed sdf sed: -e expression #1, char 3: Unterminated `s' command  C:\>echo aaa > f C:\>sed -e "s/a/x/" < f xaa 

Dies wird sedvon unxutils verwendet

Das hat funktioniert !. Danke dir. Liegt das an dem `-e`-Parameter? TheSavo vor 12 Jahren 0
Nicht sicher, was falsch war, indem der Parameter "-e" und die doppelten Anführungszeichen entfernt wurden, funktioniert es immer noch TheSavo vor 12 Jahren 0