7
私はUbuntu 12.04でこの置換コマンドを実行します。sedエラー "無効な範囲の終了"
$ sed -e "s/([a-zA-Z0-9.-/\\ :]+)/\1/g"
ただし、次のエラーが発生します。
のsed:-e式#1、CHAR 27:無効な範囲の終了
私は同じ表現がMacOSXの上で動作します覚えています。
コマンドが失敗する理由を説明できますか?
私はUbuntu 12.04でこの置換コマンドを実行します。sedエラー "無効な範囲の終了"
$ sed -e "s/([a-zA-Z0-9.-/\\ :]+)/\1/g"
ただし、次のエラーが発生します。
のsed:-e式#1、CHAR 27:無効な範囲の終了
私は同じ表現がMacOSXの上で動作します覚えています。
コマンドが失敗する理由を説明できますか?
2つの方法で解決できます。そのうちの一つは、それは次のようになり、特殊文字をエスケープ避け、最初または最後の位置までの範囲内の-
を移動し、その特別な意味を避けるために-r
スイッチを使用することです:
sed -re "s/([a-zA-Z0-9./\\ :-]+)/\1/g"
そうしないと、エスケープする必要があります。どちらか(
、)
および+
のようなもの:
sed -e "s/\([a-zA-Z0-9./\\ :-]\+\)/\1/g"
Thx!これはコマンドラインで動作します。しかし、[ここ](http://stackoverflow.com/questions/16637799/sed-error-invalid-reference-1-on-s-commands-rhs)はフォローアップの質問です。 – JJD