Cara menginstal dan menggunakan GNU Grep di OSX

50

Saya memiliki coreutils tetapi saya tidak yakin apakah GNU grep ada di sana. Saya hanya ingin menggunakan flag -Puntuk Perl regex yang ditemukan di GNU grep, tetapi tidak di BSD grep.

PATH saya /usr/local/opt/coreutils/libexec/gnubin:/usr/local/bin:/usr/bin:/opt/local/sbin:/usr/local/bin:/usr/bin:/bin:/usr/sbin:/sbin:/opt/X11/bin:/usr/local/git/bin:/usr/texbin:/Users/masi/.cabal/binjadi saya punya coreutils dulu di PATH.

Namun, grep adalah BSD ketika saya menggunakannya: grep --versionmemberi grep (BSD grep) 2.5.1-FreeBSD.

Perintah type -p grepkembali/usr/bin/grep

Bagaimana Anda bisa menginstal GNU Grep di OSX?

Léo Léopold Hertz 준영
sumber

Jawaban:

72

GNU grep bukan bagian dari coreutils. Untuk menginstal, jalankan

brew install grep

Seperti halnya core, ini tidak secara otomatis menggantikan grep yang ada

==> Caveats
The command has been installed with the prefix "g".
If you do not want the prefix, install using the "with-default-names" option.
nohillside
sumber
2
Ketika saya melakukan ini saya grepmasih FreeBSD satu, tapi egrepdan fgrepyang GNU. Bagaimana saya bisa mengatur default grepke GNU? (Saya memang menggunakan --with-default-names)
Juicy
3
@ juicy apakah Anda mencoba ini di shell baru?
nohillside
3
Sebagai referensi, perintah grep GNU bernamaggrep
Will Sheppard
2
Jalankan brew uninstall grep(atau brew remove grep) jika sudah diinstal dan brew install grep --with-default-namesuntuk memberikan grepprioritas GNU pada baris perintah. Diuji dengan Homebrew 1.5.4 Homebrew/homebrew-core (git revision 3bb326; last commit 2018-02-22)Jangan lupa untuk membuka shell baru atau menjalankan hash -ratau export PATH=$PATHmemuat ulang path ke aplikasi biner (yaitu grep GNU baru Anda).
Jonathan Komar
3
@JonathanKomar sayangnya di Homebrew versi 2.0.0 bendera --with-default-names tidak lagi tersedia.
Dez
5

Seperti yang ditunjukkan oleh komentar, jawaban berperingkat tertinggi (dari nohillside) perlu diperbarui sebagai berikut:

Jika grep sudah diinstal oleh brew, hapus grep terlebih dahulu.

% brew uninstall grep

Kemudian instal grep:

% brew install grep

All commands have been installed with the prefix "g".
If you need to use these commands with their normal names, you
can add a "gnubin" directory to your PATH from your bashrc like:
  PATH="/usr/local/opt/grep/libexec/gnubin:$PATH"
=º  /usr/local/Cellar/grep/3.3: 21 files, 880.7KB

Perhatikan bahwa Anda perlu memodifikasi PATH. Misalnya, tambahkan ke .bashrc Anda:

export PATH="/usr/local/opt/grep/libexec/gnubin:$PATH"

Saya harus melakukan hal di atas pada mac saya ketika setelah brew upgradegrep saya tidak lagi dapat diakses (sudah diinstal sebelumnya dengan brew install grep --with-default-names, dan opsi ini tidak tersedia lagi).

Solusi ini bekerja pada Homebrew 2.1.1:

brew --version
Homebrew 2.1.1
Homebrew/homebrew-core (git revision 5afdd; last commit 2019-04-22)
Homebrew/homebrew-cask (git revision a5a206; last commit 2019-04-22)

Jawaban ini didasarkan pada jawaban nohillside, dengan komentar dari Jonathan Komar dan scott m gardner.

Timur Shtatland
sumber
Ini lebih baik daripada jawaban yang diterima.
smci