Подтвердить что ты не робот

.bash_profile sed:\1, не определенный в RE

Я должен настроить среду локального веб-разработки на своей OS X 10.9 и установить 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? И почему я получаю эту ошибку?

4b9b3361

Ответ 1

Вы должны использовать \(.*\) вместо (.*).

sed по умолчанию использует Basic Regular Expressions (BRE), который использует \( и \) для группового захвата, а не только ( и ), как используется в Extended Regular Expressions (ERE). Поскольку в вашем выражении используется (.*) вместо \(.*\), он не распознается как групповой захват, и, следовательно, для использования с \1 ничего не фиксируется.

В некоторых реализациях sed, например, предоставляемых GNU и BSD, есть расширение для указания использования ERE, но оно не указано по POSIX, и вы не можете использовать его, если хотите быть переносимым.