Di mana sed yang masuk akal?

10

Di Yosemite. Sed sudah tua: tidak mengerti \tmisalnya. Saya menginstal coreutilsdan tidak dapat menemukan yang sedterkait dengan yang sama.

Apa pilihan saya di sini?

javadba
sumber
3
Jika Anda menjalankan stock OS X sed dengan -Eopsi, itu seharusnya menerimanya \t. Lihat re_formathalaman manual untuk detailnya.
nwellnhof
Ini harus , tapi tidak. echo -e 'foo\tbar' | sed -E 's/\t/blah/'hasil foo barpada Mavericks 10.9.5.
Will

Jawaban:

11

Anda perlu menginstal gnu-sed, bukan hanya coreutils:

brew install gnu-sed

Kemudian, Anda harus menambahkan baris berikut pada .bash_profile:

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

Maka sedversi Anda harus yang terbaru:

$ 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
sumber
1
Anda tidak perlu PATHpernyataan. Hanya brew install gnu-seddan itu akan tersedia sebagaigsed
neu242
1
The PATHpernyataan memungkinkan Anda menggunakan perintah sedbukan gsed. Itu tidak perlu, tetapi Anda tidak perlu ingat untuk menambahkan surat gke sedperintah Anda .
jherran
2
Tentu. Tapi itu mungkin mengganggu program yang diharapkan sedmenjadi BSD sed. Saya tidak tahu apakah itu masalah, tapi saya berharap begitu. (jika osx maka bsdisme)
neu242
alias sed=gseddi profil, mungkin?
Kroltan
8

Pertanyaan Anda ditandai homebrew, tetapi untuk pembaca yang menggunakan MacPorts: Jalankan sudo port install gseduntuk mendapatkan GNU sed (tersedia dengan gsedperintah, mirip dengan gfinddi findutilsport).

oarfish
sumber
4

Instal fink . Anda juga akan membutuhkan XCode jika Anda belum mendapatkannya.

Kemudian instal sed terbaru (dan banyak hal berguna lainnya) seperti ini:

fink install sed

paul
sumber
thx, saya tidak tahu
fink
2
Fink sudah cukup tua. Saya akan merekomendasikan Homebrew sebagai gantinya.
neu242
2
@ neu242 Bagaimana "tua" masalah? Unix berusia 45 tahun dan kami masih menggunakannya. Fink sendiri adalah 6 tahun, cukup lama untuk menyelesaikan masalah. Paket Fink (dan MacPorts) diperbarui secara berkala.
paul
@ paul Oh, saya baru saja tidak pernah bertemu orang yang menggunakan Fink sekitar 10 tahun terakhir. Senang mendengar bahwa itu masih dapat digunakan! :)
neu242