Como instalar e usar o GNU Grep no OSX

50

Eu tenho coreutils, mas não tenho certeza se o GNU grep está lá. Eu só quero usar o sinalizador -Ppara regl Perl que é encontrado no GNU grep, mas não no BSD grep.

Meu PATH é /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/binassim que eu tenho coreutils primeiro no PATH.

No entanto, grep é BSD quando eu estou usando-o: grep --versiongrep (BSD grep) 2.5.1-FreeBSD.

Comando type -p grepretorna/usr/bin/grep

Como você pode instalar o GNU Grep no OSX?

Léo Léopold Hertz 준영
fonte

Respostas:

72

O GNU grep não faz parte do coreutils. Para instalar, execute

brew install grep

Como no coreutils, isso não substitui automaticamente o 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
fonte
2
Quando faço isso, meu grepainda é o freeBSD, mas egrepe fgrepé o GNU. Como posso definir o padrão greppara GNU? (Eu usei --with-default-names)
Juicy
3
@juicy você tentou isso em um novo shell?
nohillside
3
Para referência, o comando GNU grep é chamadoggrep
Will Sheppard
2
Execute brew uninstall grep(ou brew remove grep) se já estiver instalado e brew install grep --with-default-namespara dar grepprecedência ao GNU na linha de comando. Testado com Homebrew 1.5.4 Homebrew/homebrew-core (git revision 3bb326; last commit 2018-02-22)Não esqueça de abrir um novo shell ou executar hash -rou export PATH=$PATHrecarregar os caminhos para aplicativos binários (por exemplo, seu novo GNU grep).
Jonathan Komar 22/02
3
@JonathanKomar, infelizmente, no Homebrew versão 2.0.0, o sinalizador --with-default-names não está mais disponível.
Dez
5

Conforme os comentários indicam, a resposta com a classificação mais alta (do nohillside) precisa ser atualizada da seguinte forma:

Se o grep já foi instalado pelo brew, remova o grep primeiro.

% brew uninstall grep

Em seguida, instale o 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

Observe que você precisa modificar o PATH. Por exemplo, adicione ao seu .bashrc:

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

Eu tive que fazer o acima no meu mac quando o brew upgrademeu grep não estava mais acessível (ele foi instalado anteriormente com brew install grep --with-default-names, e esta opção não está mais disponível).

Esta solução funciona a partir do 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)

Essa resposta é baseada na de nohillside, com comentários de Jonathan Komar e Scott Gardner.

Timur Shtatland
fonte
Isso é melhor que a resposta aceita.
smci 12/10