Cómo instalar y usar GNU Grep en macOS

Tengo coreutils pero no estoy seguro de si GNU grep está ahí. Solo quiero usar la bandera -Ppara Perl regex que se encuentra en GNU grep, pero no en BSD grep.

Mi RUTA es /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/binasí que tengo coreutils primero en la RUTA.

Sin embargo, grep es BSD cuando lo estoy usando: grep --versionda grep (BSD grep) 2.5.1-FreeBSD.

El comando type -p grepregresa/usr/bin/grep

¿Cómo puedes instalar GNU Grep en macOS?

Respuestas (2)

GNU grep no es parte de coreutils. Para instalar, ejecutar

brew install grep

Al igual que con coreutils, esto no reemplaza automáticamente el grep existente

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

Entonces, después de la instalación, puede usar ggrep, gegrepy gfgrep; o extienda PATHcomo se muestra arriba para usar, grepetc. La segunda opción puede confundir algunos scripts específicos de macOS, aunque en caso de que las opciones difieran.

La respuesta de nohillside necesita actualizarse de la siguiente manera:

Si grep ya fue instalado por brew, elimine grep primero.

% brew uninstall grep

Luego instale 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

Tenga en cuenta que necesita modificar la RUTA. Por ejemplo, agregue a su .bashrc:

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

Tuve que hacer lo anterior en mi mac cuando brew upgradeya no se podía acceder a mi grep (se instaló previamente con brew install grep --with-default-namesy esta opción ya no está disponible).

Esta solución funciona a partir de 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)

Esta respuesta se basa en la de nohillside, con comentarios de Jonathan Komar y scott m gardner.