Mam coreutils, ale nie jestem pewien, czy jest tam GNU grep. Chcę po prostu użyć flagi -P dla wyrażenia regularnego Perla, którą można znaleźć w GNU grep, ale nie w BSD grep.

Moja PATH to /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/bin, więc najpierw mam coreutils w PATH.

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

Polecenie type -p grep zwraca /usr/bin/grep

Jak zainstalować GNU Grep w macOS?

Odpowiedź

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 grepa

==> Caveats 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" 

Po zainstalowaniu możesz użyć ggrep, gegrep i gfgrep ; lub rozszerz PATH, jak pokazano powyżej, aby użyć grep itp. Druga opcja może zmylić niektóre skrypty specyficzne dla macOS, chociaż opcje są różne.

Odpowiedź

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, trzeba zmodyfikować ŚCIEŻKĘ. Na przykład dodaj do swojego .bashrc:

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

Powyższe musiałem zrobić na moim Macu po brew upgrade mój grep nie był już dostępny (został zainstalowany wcześniej z brew install grep --with-default-names i ta opcja nie jest już dostępna).

To rozwiązanie działa od 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ź jest oparta na odpowiedzi z Nohillside, z komentarzami Jonathana Komara i Scotta M Gardnera.

Dodaj komentarz

Twój adres email nie zostanie opublikowany. Pola, których wypełnienie jest wymagane, są oznaczone symbolem *