Gdzie jest rozsądny sed?

11

W Yosemite. Sed jest stary: \tna przykład nie rozumie . Zainstalowałem coreutilsi nie mogę znaleźć żadnego sedpowiązanego z tym samym.

Jakie są moje opcje tutaj?

javadba
źródło
4
Jeśli uruchamiasz podstawowy OS X sed z -Eopcją, powinien on zaakceptować \t. Szczegółowe informacje można znaleźć na re_formatstronie podręcznika man.
nwellnhof
To powinno , ale tak nie jest. echo -e 'foo\tbar' | sed -E 's/\t/blah/'plony foo barna Mavericks 10.9.5.
Czy

Odpowiedzi:

11

Musisz zainstalować gnu-sed, a nie tylko coreutils:

brew install gnu-sed

Następnie musisz dodać następujące wiersze do .bash_profile:

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

Twoja sedwersja powinna być najnowsza:

$ 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
źródło
1
Nie potrzebujesz PATHwyciągów. Tylko brew install gnu-sedi będzie dostępny jakogsed
neu242
1
Te PATHwypowiedzi pozwala użyć polecenia sedzamiast gsed. Nie jest to konieczne, ale nie musisz pamiętać, aby dołączyć list gdo swojego sedpolecenia.
jherran
2
Pewnie. Ale może to kolidować z programami, które oczekują sedBSD sed. Nie wiem, czy to jest problem, ale spodziewam się, że będzie. (jeśli osx to bsdisms)
neu242 9.01.15
alias sed=gsedmoże w profilu?
Kroltan
9

Twoje pytanie jest oznaczone homebrew, ale dla czytelników używających MacPorts: Uruchom, sudo port install gsedaby uzyskać GNU sed (dostępny z gsedpoleceniem, podobnie jak gfindw findutilsporcie).

wiosłowa
źródło
5

Zainstaluj Fink . Będziesz także potrzebował XCode, jeśli jeszcze go nie masz.

Następnie zainstaluj najnowszą wersję sed (i wiele innych przydatnych rzeczy), takich jak:

fink install sed

Paweł
źródło
Dzięki, nie byłem świadomy fink
javadba
2
Fink robi się już dość stary. Zamiast tego poleciłbym Homebrew .
neu242
2
@ neu242 Jak „stary” jest problemem? Unix ma 45 lat i nadal go używamy. Sam Fink ma 6 lat, wystarczająco długo, aby rozwiązać problemy. Pakiety Fink (i MacPorts) są regularnie aktualizowane.
paul
@paul Och, po prostu nigdy nie spotkałem nikogo używającego Fink przez ostatnie 10 lat. Dobrze słyszeć, że nadal jest użyteczny! :)
neu242