Wo ist ein vernünftiger Sed?

11

Auf Yosemite. Das sed ist alt: versteht \tzum Beispiel nicht. Ich habe installiert coreutilsund kann keine damit verbundenen finden sed.

Welche Möglichkeiten habe ich hier?

Javadba
quelle
4
Wenn Sie das Standard-OS X sed mit der -EOption ausführen , sollte es akzeptieren \t. Weitere re_formatInformationen finden Sie in der Manpage.
Nwellnhof
Es sollte , aber es tut nicht. echo -e 'foo\tbar' | sed -E 's/\t/blah/'Renditen foo barauf Mavericks 10.9.5.
Will

Antworten:

11

Sie müssen gnu-sednicht nur die Coreutils installieren :

brew install gnu-sed

Dann müssen Sie die folgenden Zeilen hinzufügen .bash_profile:

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

Dann sollte Ihre sedVersion die neueste sein:

$ 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
quelle
1
Sie brauchen die PATHAussagen nicht. Nur brew install gnu-sedund es wird verfügbar sein alsgsed
neu242
1
Mit den PATHAnweisungen können Sie den Befehl sedanstelle von verwenden gsed. Es ist nicht notwendig, aber Sie müssen nicht daran denken, den Brief gan Ihren sedBefehl anzuhängen .
jherran
2
Sicher. Dies könnte jedoch Programme stören, seddie eine BSD-Sedierung erwarten . Ich weiß nicht, ob das ein Problem ist, aber ich würde es erwarten. (wenn osx dann bsdisms)
neu242
alias sed=gsedin einem Profil vielleicht?
Kroltan
9

Ihre Frage ist markiert homebrew, aber für Leser, die MacPorts verwenden: Ausführen sudo port install gsed, um GNU sed zu erhalten (verfügbar mit dem gsedBefehl, ähnlich wie gfindim findutilsPort).

oarfish
quelle
5

Installiere fink . Sie benötigen auch XCode, wenn Sie es noch nicht haben.

Installieren Sie dann das neueste Sed (und viele andere nützliche Dinge) wie folgt:

fink install sed

paul
quelle
thx, ich war mir nicht bewusst,
fink
2
Fink wird ziemlich alt. Ich würde stattdessen Homebrew empfehlen .
Neu242
2
@ neu242 Wie ist "alt" ein Problem? Unix ist 45 Jahre alt und wir benutzen es immer noch. Fink selbst ist 6 Jahre alt und lang genug, um die Probleme zu lösen. Fink- (und MacPorts-) Pakete werden regelmäßig aktualisiert.
Paul
@paul Oh, ich habe in den letzten 10 Jahren noch nie jemanden getroffen, der Fink benutzt. Gut zu hören, dass es noch verwendbar ist! :)
neu242