Onde está um sed razoável?

11

Em Yosemite. O sed é antigo: não entende, \tpor exemplo. Eu instalei coreutilse não consigo encontrar nenhum sedassociado ao mesmo.

Quais são minhas opções aqui?

javadba
fonte
4
Se você executar o OS X padrão com a -Eopção, ele deverá ser aceito \t. Veja a re_formatpágina de manual para detalhes.
Nwellnhof
Ele deveria , mas isso não acontece. echo -e 'foo\tbar' | sed -E 's/\t/blah/'rendimentos foo barno Mavericks 10.9.5.
Will

Respostas:

11

Você precisa instalar gnu-sed, não apenas os coreutils:

brew install gnu-sed

Em seguida, você deve adicionar as seguintes linhas no seu .bash_profile:

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

Então sua sedversão deve ser a mais recente:

$ 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
fonte
1
Você não precisa das PATHdeclarações. Just brew install gnu-sede estará disponível comogsed
neu242
1
As PATHinstruções permitem usar o comando em sedvez de gsed. Não é necessário, mas você não precisará se lembrar de anexar a carta gao seu sedcomando.
jherran
2
Certo. Mas isso pode interferir nos programas que esperam sedser sediados no BSD. Não sei se isso é um problema, mas espero que seja. (se OSX então bsdisms)
neu242
alias sed=gsedem um perfil, talvez?
Kroltan
9

Sua pergunta está marcada homebrew, mas para os leitores que usam MacPorts: Execute sudo port install gsedpara obter o GNU sed (disponível com o gsedcomando, da mesma forma que gfindna findutilsporta).

remo
fonte
5

Instale o fink . Você também precisará do XCode se ainda não o tiver.

Em seguida, instale o sed mais recente (e muitas outras coisas úteis) como este:

fink install sed

Paulo
fonte
thx, eu não estava ciente de fink
javadba
2
Fink está ficando velho. Eu recomendaria o Homebrew .
Neu242
2
@ neu242 Como é "velho" um problema? O Unix tem 45 anos e ainda o usamos. O Fink em si é de 6 anos, tempo suficiente para que os problemas sejam resolvidos. Os pacotes do Fink (e MacPorts) são atualizados regularmente.
paul
@ paul Oh, eu nunca encontrei ninguém usando o Fink nos últimos 10 anos. É bom saber que ainda é utilizável! :)
neu242