Wo ist eine vernünftige sed?

Auf Yosemite. Der sed ist alt: versteht \tzum Beispiel nicht. Ich habe installiert coreutilsund kann keine sedzugehörigen finden.

Welche Möglichkeiten habe ich hier?

Wenn Sie das standardmäßige OS X sed mit der -EOption ausführen, sollte es \t. Einzelheiten finden Sie auf der re_formatManpage.
Es sollte , tut es aber nicht. echo -e 'foo\tbar' | sed -E 's/\t/blah/'Renditen foo barauf Mavericks 10.9.5.

Antworten (3)

Sie müssen installieren gnu-sed, nicht nur die Coreutils:

brew install gnu-sed

Dann müssen Sie die folgenden Zeilen zu Ihrem 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 sedsollte Ihre Version 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.
Du brauchst die PATHAussagen nicht. Just brew install gnu-sedund es wird als verfügbar seingsed
Mit den PATHAnweisungen können Sie den Befehl sedanstelle von verwenden gsed. Es ist nicht notwendig, aber Sie müssen nicht daran denken, den Buchstaben gan Ihren sedBefehl anzuhängen.
Sicher. Aber das könnte Programme stören, die erwarten sed, BSD-sed zu sein. Ich weiß nicht, ob das ein Problem ist, aber ich würde es erwarten. (wenn osx dann bsdisms)
alias sed=gsedin einem Profil vielleicht?

Ihre Frage ist getaggt homebrew, aber für Leser, die MacPorts verwenden: Run sudo port install gsedto get GNU sed (verfügbar mit dem gsedBefehl, ähnlich wie gfindim findutilsPort).

Fink installieren . Sie benötigen auch XCode, falls Sie es noch nicht haben.

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

fink install sed

thx, fink war mir nicht bekannt
Fink wird ziemlich alt. Ich würde stattdessen Homebrew empfehlen .
@neu242 Inwiefern ist "alt" ein Problem? Unix ist 45 Jahre alt und wir verwenden es immer noch. Fink selbst ist 6 Jahre alt, lang genug, um die Probleme auszubügeln. Fink (und MacPorts) Pakete werden regelmäßig aktualisiert.
@paul Oh, ich habe in den letzten 10 Jahren einfach noch nie jemanden getroffen, der Fink verwendet hat. Schön zu hören, dass es noch nutzbar ist! :)