web-dev-qa-db-ja.com

.bash_profile sed:REで\ 1が定義されていません

OS X 10.9でローカルWeb開発環境をセットアップし、Homebrewをインストールしました。ガイドの次のステップでは、次のコマンドを使用して~/.bash_profileにロジックを追加するように指示しています。

echo "export PATH=\$(echo \$PATH | sed 's|/usr/local/bin||; s|/usr/local/sbin||; s|::|:|; s|^:||; s|(.*)|/usr/local/bin:/usr/local/sbin:\1|')" >> ~/.bash_profile && source ~/.bash_profile

ターミナルに入力すると、次のようになります:

sed: 1: "s|/usr/local/bin||; s|/ ...": \1 not defined in the RE

export PATH=/usr/local/bin:/usr/local/sbin:$PATHに書き込む必要があるのは.bash_profileですか?そして、なぜ私はそのエラーを受け取るのですか?

39
leymannx

_(.*)_の代わりに\(.*\)を使用する必要があります。

sedは、デフォルトで基本正規表現(BRE)を使用します。これは、Extendedで使用される_\(_および_\)_だけでなく、グループのキャプチャに_(_および_)_を使用します正規表現(ERE)。式は\(.*\)の代わりに_(.*)_を使用したため、グループキャプチャとして認識されず、したがって_\1_で使用するためにキャプチャされるものはありません。

GNUおよびBSDによって提供されるものなど)の一部のsed実装には、EREの使用を指定するための拡張機能がありますが、 POSIXでは指定されません であり、移植したい場合は使用できません。

82