Où est un sed raisonnable?

11

Sur Yosemite. Le sed est vieux: ne comprend pas \tpar exemple. J'ai installé coreutilset ne trouve aucun sedassocié à celui-ci.

Quelles sont mes options ici?

javadba
la source
4
Si vous exécutez le stock OS X sed avec l' -Eoption, il devrait accepter \t. Voir la re_formatpage de manuel pour plus de détails.
nwellnhof
Cela devrait , mais ce n'est pas le cas. echo -e 'foo\tbar' | sed -E 's/\t/blah/'rendements foo barsur Mavericks 10.9.5.
Will

Réponses:

11

Vous devez installer gnu-sed, pas seulement les coreutils:

brew install gnu-sed

Ensuite, vous devez ajouter les lignes suivantes sur votre .bash_profile:

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

Votre sedversion devrait alors être la dernière:

$ 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
la source
1
Vous n'avez pas besoin des PATHdéclarations. Just brew install gnu-sedand it will be available asgsed
neu242
1
Les PATHinstructions vous permettent d'utiliser la commande sedau lieu de gsed. Ce n'est pas nécessaire, mais vous n'aurez pas besoin de vous rappeler d'ajouter la lettre gà votre sedcommande.
jherran
2
Sûr. Mais cela pourrait interférer avec les programmes qui s'attendent sedà être BSD sed. Je ne sais pas si c'est un problème, mais je m'attendrais à ce que ce soit. (si osx alors bsdismes)
neu242
alias sed=gseddans un profil, peut-être?
Kroltan
9

Votre question est balisée homebrew, mais pour les lecteurs utilisant MacPorts: exécutez sudo port install gsedpour obtenir GNU sed (disponible avec la gsedcommande, de la même manière que gfinddans le findutilsport).

oarfish
la source
5

Installez fink . Vous aurez également besoin de XCode si vous ne l'avez pas déjà.

Ensuite, installez le dernier sed (et beaucoup d'autres choses utiles) comme ceci:

fink install sed

Paul
la source
thx, je n'étais pas au courant de fink
javadba
2
Fink devient assez vieux. Je recommanderais plutôt Homebrew .
neu242
2
@ neu242 En quoi "l'ancien" est-il un problème? Unix a 45 ans et nous l'utilisons toujours. Fink lui-même est de 6 ans, assez long pour que les problèmes soient résolus. Les packages Fink (et MacPorts) sont mis à jour régulièrement.
paul
@paul Oh, je n'ai jamais rencontré personne utilisant Fink au cours des 10 dernières années. Bon d'entendre que c'est toujours utilisable! :)
neu242