Обходной путь на 2020 год

Мы знаем, что sed в Mac OS - это sed POSIX, который не может использовать многие параметры. С другой стороны, GNU sed очень удобен. Например, GNU sed интерпретирует escape-последовательности, такие как \t, \n, \001, \x01, \w и \b. Sed OSX и POSIX sed интерпретируют только \n (но не в заменяющей части s). См. Различия между sed в Mac OSX и другими« стандартными sed?» для более подробной информации.

Другое дело, что опция --with-default-names удалена с января 2019 года, поэтому теперь мы не можем использовать brew install gnu-sed --with-default-names для прямой замены sed.

В этом посте мы заменим sed для OSX на GNU sed и установим его по умолчанию.

Установить

Сначала мы подтверждаем путь к sed и устанавливаем GNU sed с помощью brew.

$ which sed              
/usr/bin/sed
$ brew install gnu-sed

Затем мы используем brew info, чтобы увидеть информацию о GNU sed.

$ brew info gnu-sed
...
GNU "sed" has been installed as "gsed".
If you need to use it as "sed", you can add a "gnubin" directory
to your PATH from your bashrc like:
PATH="/usr/local/opt/gnu-sed/libexec/gnubin:$PATH"
...

Мы должны увидеть PATH в консоли. Далее мы добавляем его в пути.

$ export PATH="/usr/local/opt/gnu-sed/libexec/gnubin:$PATH"

Наконец, мы подтверждаем путь sed.

$ which sed                                                         
/usr/local/opt/gnu-sed/libexec/gnubin/sed
$ sed
Usage: sed [OPTION]... {script-only-if-no-other-script} [input-file]...
...
...
GNU sed home page: <https://www.gnu.org/software/sed/>.
General help using GNU software: <https://www.gnu.org/gethelp/>.

Теперь мы можем использовать GNU sed, просто набрав sed.

Просмотрите другие мои сообщения на Medium с категориальным представлением!
GitHub: BrambleXu
LinkedIn: Xu Liang
Блог: bramblexu.com