web-dev-qa-db-ja.com

Sed Windowsの場合

初めてSEDを使おうとしています。問題を複雑にするために、私はそれをウィンドウズで使用しています。 このソース からダウンロードしました。作業マシンにインストール権限がないため、プロファイルに実行可能ファイル用のフォルダーを作成し、それをPATHに追加しました。

初めてSEDを使おうとすると問題が発生します。それはエラーで失敗し続けます:

sed: -e expression #1, char 1: unknown command: `` '' ` この方法 からいくつかの異なるサンプルを試しましたが、取得できません。私は他に誰もこの問題を抱えていないことを発見しました。何を試してみればいいですか?引用符、二重引用符、および逆引用符でカプセル化してみました。何も役に立たないようです。

3
TheSavo
C:\>sed sdf
sed: -e expression #1, char 3: Unterminated `s' command

C:\>echo aaa > f
C:\>sed -e "s/a/x/" < f
xaa

これはsed from nxutils を使用しています

5
RedGrittyBrick

Unixとは異なり、WindowsコマンドラインシェルはWord分割を実行せず、引用符を削除しません。プログラムは、コマンドライン全体を含む単一の文字列を受け取るだけです。これは、すべてのプログラムが同じ引用規則に従うことができるわけではないことを意味します。

この場合、GnuWin32バージョンのsedは、1つの引用スタイルのみをサポートします– "二重引用符"。たとえば、私のテストでは、以下が正常に機能します。

sed "s/foo/bar/"

Cygwin からsedを取得することもできます。また、より完全なUnixライクなシステム(シェル、エディター、その他のツール)も入手できます。将来このような構文の問題を回避するために、学習にUnixシェルを使用すると簡単になります。

5
user1686