Где разумный сед?

11

На Йосемити. Сед старый: не понимает \tнапример. Я установил coreutilsи не могу найти ничего sedсвязанного с таким же.

Какие у меня есть варианты?

javadba
источник
4
Если вы запускаете стандартную OS X sed с -Eопцией, она должна принять \t. Смотрите re_formatman-страницу для деталей.
nwellnhof
Это должно , но это не так. echo -e 'foo\tbar' | sed -E 's/\t/blah/'урожайность foo barна Маверикс 10.9.5.
Будет

Ответы:

11

Вам нужно установить gnu-sed, а не только coreutils:

brew install gnu-sed

Затем вы должны добавить следующие строки .bash_profile:

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

Тогда ваша sedверсия должна быть самой последней:

$ sed --version
sed (GNU sed) 4.2.2
Copyright (C) 2012 Free Software Foundation, Inc.
License GPLv3+: GNU GPL version 3 or later <http://gnu.org/licenses/gpl.html>.
This is free software: you are free to change and redistribute it.
There is NO WARRANTY, to the extent permitted by law.

Written by Jay Fenlason, Tom Lord, Ken Pizzini,
and Paolo Bonzini.
GNU sed home page: <http://www.gnu.org/software/sed/>.
General help using GNU software: <http://www.gnu.org/gethelp/>.
E-mail bug reports to: <bug-sed@gnu.org>.
Be sure to include the word ``sed'' somewhere in the ``Subject:'' field.
jherran
источник
1
Вам не нужны PATHзаявления. Просто так brew install gnu-sedи будет доступно какgsed
neu242
1
В PATHведомости позволяет использовать команду sedвместо gsed. Это не обязательно, но вам не нужно помнить, чтобы добавить письмо gк вашей sedкоманде.
jherran
2
Конечно. Но это может помешать программам, которые ожидают sedбыть BSD sed. Я не знаю, если это проблема, но я ожидаю, что это будет. (если osx, то bsdisms)
neu242
alias sed=gsedв профиле, может быть?
Кролтан
9

Ваш вопрос помечен homebrew, но для тех читателей , используя MacPorts: Run , sudo port install gsedчтобы получить GNU СЭД (доступен с gsedкомандой, так же , как gfindв findutilsпорту).

Oarfish
источник
5

Установить финк . Вам также понадобится XCode, если у вас его еще нет.

Затем установите последнюю версию sed (и много других полезных вещей) следующим образом:

fink install sed

Павел
источник
спасибо, я не знал fink
Javadba
2
Финк становится довольно старым. Я бы порекомендовал Homebrew вместо этого.
neu242
2
@ neu242 Как "старая" проблема? Unix 45 лет, и мы до сих пор используем его. Самому Финку 6 лет, этого достаточно, чтобы решить проблемы. Пакеты Fink (и MacPorts) регулярно обновляются.
Павел
@ paul О, я никогда не сталкивался с кем-то, кто использовал Fink последние 10 лет или около того. Приятно слышать, что все еще можно использовать! :)
neu242