Jak zainstalować i używać GNU Grep w OSX

50

Mam coreutils, ale nie jestem pewien, czy GNU grep tam jest. Chcę tylko użyć flagi -Pdla wyrażenia regularnego Perla, która znajduje się w GNU grep, ale nie w BSD grep.

Moja ŚCIEŻKA jest /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/bintaka, że ​​najpierw mam ŚCIEŻKI.

Jednak grep jest BSD, kiedy go używam: grep --versiondaje grep (BSD grep) 2.5.1-FreeBSD.

Polecenie type -p grepzwraca/usr/bin/grep

Jak zainstalować GNU Grep w OSX?

Léo Léopold Hertz 준영
źródło

Odpowiedzi:

72

GNU grep nie jest częścią coreutils. Aby zainstalować, uruchom

brew install grep

Podobnie jak w przypadku coreutils, nie zastępuje to automatycznie istniejącego grep

==> 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
źródło
2
Kiedy to zrobić mój grepjest jeszcze jeden FreeBSD, ale egrepi fgrepsą GNU. Jak mogę ustawić wartość domyślną grepna GNU? (Użyłem --with-default-names)
Juicy
3
@juicy próbowałeś tego w nowej powłoce?
nohillside
3
Dla porównania, nazwa polecenia GNU grep nazywa sięggrep
Will Sheppard
2
Uruchom brew uninstall grep(lub brew remove grep), jeśli jest już zainstalowany i brew install grep --with-default-namesdać greppierwszeństwo GNU w wierszu poleceń. Testowane z Homebrew 1.5.4 Homebrew/homebrew-core (git revision 3bb326; last commit 2018-02-22)Nie zapomnij otworzyć nowej powłoki lub uruchomić hash -rlub export PATH=$PATHponownie załadować ścieżki do aplikacji binarnych (tj. Nowego GNU grep).
Jonathan Komar
3
@JathanathanKomar niestety w wersji 2.0.0 Homebrew flaga --with-default-names nie jest już dostępna.
Dez
5

Jak wskazują komentarze, najwyżej oceniana odpowiedź (z Nohillside) wymaga aktualizacji w następujący sposób:

Jeśli grep został już zainstalowany przez brew, najpierw usuń grep.

% brew uninstall grep

Następnie zainstaluj 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

Pamiętaj, że musisz zmodyfikować ŚCIEŻKĘ. Na przykład dodaj do swojego .bashrc:

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

Musiałem zrobić powyższe na moim komputerze Mac, gdy po brew upgrademoim grep nie był już dostępny (był wcześniej zainstalowany z brew install grep --with-default-names, a ta opcja nie jest już dostępna).

To rozwiązanie działa od wersji 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)

Ta odpowiedź oparta jest na odpowiedzi z nohillside, z komentarzami Jonathana Komara i Scotta Gardnera.

Timur Shtatland
źródło
To jest lepsze niż zaakceptowana odpowiedź.
smci