¿Dónde está un sed razonable?

11

En Yosemite El sed es viejo: no entiende \tpor ejemplo. Instalé coreutilsy no puedo encontrar ninguno sedasociado con el mismo.

¿Cuáles son mis opciones aquí?

javadba
fuente
44
Si ejecuta el stock OS X sed con la -Eopción, debería aceptarlo \t. Vea la re_formatpágina del manual para más detalles.
nwellnhof
Se debe , pero no es así. echo -e 'foo\tbar' | sed -E 's/\t/blah/'rendimientos foo baren Mavericks 10.9.5.
Will

Respuestas:

11

Necesita instalar gnu-sed, no solo los coreutils:

brew install gnu-sed

Luego, debe agregar las siguientes líneas en su .bash_profile:

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

Entonces su sedversión debería ser la última:

$ 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
fuente
1
No necesitas las PATHdeclaraciones. Justo brew install gnu-sedy estará disponible comogsed
neu242
1
Las PATHdeclaraciones le permiten usar el comando en sedlugar de gsed. No es necesario, pero no necesitará recordar agregar la carta ga su sedcomando.
jherran
2
Seguro. Pero eso podría interferir con los programas que esperan sedser BSD sed. No sé si eso es un problema, pero esperaría que lo sea. (si osx entonces bsdisms)
neu242
alias sed=gseden un perfil, tal vez?
Kroltan
9

Su pregunta está etiquetada homebrew, pero para aquellos lectores que usan MacPorts: Ejecute sudo port install gsedpara obtener GNU sed (disponible con el gsedcomando, de manera similar a gfinden el findutilspuerto).

pez remo
fuente
5

Instalar fink . También necesitará XCode si aún no lo tiene.

Luego instale el último sed (y muchas otras cosas útiles) como este:

fink install sed

Paul
fuente
gracias, no estaba al tanto de fink
javadba
2
Fink se está haciendo bastante viejo. Recomiendo Homebrew en su lugar.
neu242
2
@ neu242 ¿Cómo es "viejo" un problema? Unix tiene 45 años y todavía lo usamos. Fink en sí es de 6 años, el tiempo suficiente para resolver los problemas. Los paquetes Fink (y MacPorts) se actualizan regularmente.
Paul
@paul Oh, nunca me he encontrado con nadie usando Fink en los últimos 10 años más o menos. ¡Es bueno saber que todavía es utilizable! :)
neu242