Dov'è una sed ragionevole?


11

Su Yosemite. La sed è vecchia: non capisce \tper esempio. Ho installato coreutilse non riesco a trovare alcun sedassociato con lo stesso.

quali sono le mie opzioni?


4
Se esegui OS X sed di serie con l' -Eopzione, dovrebbe accettare \t. Vedi la re_formatpagina man per i dettagli.
nwellnhof,

Si dovrebbe , ma non è così. echo -e 'foo\tbar' | sed -E 's/\t/blah/'rese foo barsu Mavericks 10.9.5.
Sarà il

Risposte:


11

Devi installare gnu-sed, non solo i coreutils:

brew install gnu-sed

Quindi, devi aggiungere le seguenti righe sul tuo .bash_profile:

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

Quindi la tua sedversione dovrebbe essere l'ultima:

$ 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.

1
Non hai bisogno delle PATHdichiarazioni. Solo brew install gnu-sede sarà disponibile comegsed
neu242

1
Le PATHistruzioni ti consentono di utilizzare il comando sedanziché gsed. Non è necessario, ma non dovrai ricordarti di aggiungere la lettera gal tuo sedcomando.
jherran

2
Sicuro. Ma ciò potrebbe interferire con i programmi che prevedono seddi essere BSD sed. Non so se sia un problema, ma mi aspetto che lo sia. (se osx allora bsdisms)
neu242

alias sed=gsedin un profilo, forse?
Kroltan,

9

La tua domanda è etichettato homebrew, ma per quei lettori che utilizzano MacPorts: correre sudo port install gsedper ottenere GNU sed (disponibile con il gsedcomando, in modo simile a gfindnel findutilsporto).


5

Installa il fink . Avrai anche bisogno di XCode se non l'hai già.

Quindi installa l'ultima versione di sed (e molte altre cose utili) come questa:

fink install sed


grazie, non ero a conoscenza di fink
javadba

2
Fink sta diventando piuttosto vecchio. Consiglierei invece Homebrew .
neu242,

2
@ neu242 In che modo il "vecchio" è un problema? Unix ha 45 anni e lo usiamo ancora. Fink stesso è di 6 anni, abbastanza a lungo per risolvere i problemi. I pacchetti Fink (e MacPorts) vengono aggiornati regolarmente.
paul

@paul Oh, non ho mai incontrato nessuno che utilizza Fink negli ultimi 10 anni circa. È bello sapere che è ancora utilizzabile! :)
neu242,
Utilizzando il nostro sito, riconosci di aver letto e compreso le nostre Informativa sui cookie e Informativa sulla privacy.
Licensed under cc by-sa 3.0 with attribution required.