Eu tenho coreutils, mas não tenho certeza se GNU grep está lá. Eu só quero usar o sinalizador -P para Perl regex 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/bin, então tenho coreutils primeiro no PATH.

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

O comando type -p grep retorna /usr/bin/grep

Como você pode instalar o GNU Grep no macOS?

Resposta

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

brew install grep 

Assim como o coreutils, isso não substitui automaticamente o 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" 

Portanto, após a instalação, você pode usar ggrep, gegrep e gfgrep ; ou estenda PATH conforme mostrado acima para usar grep etc. A segunda opção pode confundir alguns scripts específicos do macOS, embora no caso de as opções serem diferentes.

Resposta

A resposta do nohillside precisa ser atualizada da seguinte forma:

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

% brew uninstall grep 

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

Observe que você preciso 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 depois de brew upgrade meu 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) 

Esta resposta é baseada na resposta de nohillside, com comentários de Jonathan Komar e scott m gardner.

Deixe uma resposta

O seu endereço de email não será publicado. Campos obrigatórios marcados com *