Cómo instalar y usar GNU Grep en OSX

50

Tengo coreutils pero no estoy seguro de si GNU grep está allí. 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/binpor lo 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.

Comando type -p grepregresa/usr/bin/grep

¿Cómo se puede instalar GNU Grep en OSX?

Léo Léopold Hertz 준영
fuente

Respuestas:

72

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

brew install grep

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

==> 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
fuente
2
Cuando hago esto mi grepsigue siendo el FreeBSD, pero egrepy fgrepson GNU. ¿Cómo puedo establecer el valor predeterminado grepen GNU? (Utilicé --with-default-names)
Juicy
3
@juicy ¿intentaste esto en un nuevo shell?
nohillside
3
Como referencia, se nombra el comando grep de GNUggrep
Will Sheppard
2
Ejecute brew uninstall grep(o brew remove grep) si ya está instalado y brew install grep --with-default-namespara dar grepprioridad a GNU en la línea de comando. Probado con Homebrew 1.5.4 Homebrew/homebrew-core (git revision 3bb326; last commit 2018-02-22)No olvide abrir un nuevo shell o ejecutar hash -ro export PATH=$PATHvolver a cargar las rutas a las aplicaciones binarias (es decir, su nuevo GNU grep).
Jonathan Komar
3
@JonathanKomar desafortunadamente en Homebrew versión 2.0.0 la bandera --with-default-names ya no está disponible.
Dez
5

Como indican los comentarios, la respuesta mejor calificada (de nohillside) necesita actualizarse de la siguiente manera:

Si grep ya estaba 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 después de que brew upgrademi grep ya no fuera accesible (se instaló previamente con brew install grep --with-default-names, y 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.

Timur Shtatland
fuente
Esto es mejor que la respuesta aceptada.
smci