В Mac OS 10.10.3 я установил gnu-sed, набрав:
brew install gnu-sed --default-names
Когда я набираю его снова, я получаю сообщение:
gnu-sed-4.2.2 уже установлен
Однако даже после перезагрузки системы и перезапуска Терминала я все еще не могу использовать GNU-версию sed. Например:
echo a | sed ’s_A_X_i’
возвращает: плохой флаг в команде подстановки 'i'
Что мне делать, чтобы версия GNU заработала? Вот пути в моей переменной $ PATH.
/Users/WN/-myUnix
/opt/local/bin
/opt/local/sbin
/usr/bin
/bin
/usr/sbin
/sbin
/usr/local/bin
/Applications/calibre.app/Contents/MacOS
/opt/ImageMagick/bin
/usr/texbin
Прошу прощения, если мой вопрос кажется очевидным, но я сам изучаю сценарии оболочки и еще не совсем понимаю, как устанавливаются программы UNIX. Любая помощь в использовании GNU-совместимых команд (в данном случае sed, но скоро мне понадобятся и другие) на моем Mac без ущерба или ненужного беспорядка будет очень признательна.
brew
установили GNUsed
? Этот каталог у васPATH
? Что вы получите, если наберетеsed --version
? (BSDsed
будет жаловаться; GNUsed
сообщит информацию о своей версии.) Пока вы либоbrew
заранее не укажете каталог в вашем PATH,/usr/bin
либо вы не научитесь использовать абсолютный путь к GNUsed
, вы не будете работать с GNUsed
. Будьте осторожны и с цитатами.’
- это цитата из текстового редактора, в отличие от'
.Ответы:
Примечание (2019 г.):
Эта
--with-default-names
опция удалена с января 2019 года, поэтому теперь она больше не доступна.При установке Homebrew инструктирует, как адаптировать путь, если кто-то хочет использовать sed без
g
префикса.У вас уже установлен gnu-sed без этой
--with-default-names
опции.--with-default-names
опцией он устанавливаетсяsed
в/usr/local/bin/
gsed
Итак, в вашем случае вам нужно:
При необходимости обновите путь ...
$ echo $PATH | grep -q '/usr/local/bin'; [ $? -ne 0 ] && export PATH=/usr/local/bin:$PATH $ echo a | sed 's_A_X_i'
или используйте,
gsed
как предлагали другие.источник
Когда вы устанавливаете версию GNU
sed
для Mac OS X, используя:Программа, которую вы используете
gsed
.Так например:
$ echo "Calimero is a little chicken" > test $ cat test Calimero is a little chicken $ gsed -i "s/little/big/g" test $ cat test Calimero is a big chicken
Кроме того, в дополнение к использованию командных инструментов GNU в Mac OS X, здесь есть хорошая запись в блоге, где можно получить инструменты из Linux:
Установите и используйте инструменты командной строки GNU в Mac OS / OS X
источник
То,
sed
что поставляется с OS X, находится в формате/usr/bin
.То,
sed
чтоhomebrew
устанавливается, находится в/usr/local/bin
.Если вы предпочитаете использовать
homebrew
один, у вас есть два варианта:Опция 1
Каждый раз, когда вы хотите использовать
homebrew
sed
, введите/usr/local/bin/sed
или, предпочтительно
Вариант 2
Двигайтесь
/usr/local/bin/
вперед (т.е. раньше)/usr/bin
в своем PATH в вашем профиле входа, напримерexport PATH=/usr/local/bin:<other places>
источник
$ brew install gnu-sed
$ export PATH="/usr/local/opt/gnu-sed/libexec/gnubin:$PATH"
С этими двумя командами gnu-sed работает правильно
источник
Если вам нужно использовать команду gnu-sed с их обычными именами, вы можете добавить каталог «gnubin» в свой путь из вашего bashrc. Просто используйте следующую команду в вашем bash или терминале.
export PATH="/usr/local/opt/gnu-sed/libexec/gnubin:$PATH"
источник
--with-default-names
не работает для меня на Mac OS X 10.14.2 поэтому я создал символическую ссылку с именем ,sed
чтобыgsed
выше в$PATH
Я также создал символическую ссылку с именем
sed.1
наgsed.1
станицу руководства выше в$MANPATH
такman
бы получить доступ кgsed
справочной странице , вместо по умолчаниюsed
страницы руководстваисточник
alias sed=gsed
.