Comment installer et utiliser GNU Grep sous OSX

50

J'ai coreutils mais je ne suis pas sûr que GNU grep soit présent. Je veux juste utiliser le drapeau -Ppour l'expression rationnelle Perl qui se trouve dans GNU grep, mais pas dans BSD grep.

Mon chemin est /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/bindonc j'ai coreutils d'abord dans le chemin.

Cependant, grep est BSD quand je l’utilise: grep --versiondonne grep (BSD grep) 2.5.1-FreeBSD.

type -p grepRetourne commande/usr/bin/grep

Comment pouvez-vous installer GNU Grep sous OSX?

Léo Léopold Hertz
la source

Réponses:

72

GNU grep ne fait pas partie de coreutils. Pour installer, lancez

brew install grep

Comme avec coreutils, cela ne remplace pas automatiquement le grep existant

==> 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
la source
2
Quand je fais mon grepest encore celui freeBSD, mais egrepet fgrepsont GNU. Comment puis-je définir la valeur par défaut grepsur GNU? (J'ai utilisé --with-default-names)
Juicy
3
@juicy avez-vous essayé cela dans une nouvelle coque?
nohillside
3
Pour référence, la commande GNU grep est nomméeggrep
Will Sheppard le
2
Exécutez brew uninstall grep(ou brew remove grep) s'il est déjà installé et brew install grep --with-default-namesdonnez la greppriorité à GNU sur la ligne de commande. Testé avec Homebrew 1.5.4 Homebrew/homebrew-core (git revision 3bb326; last commit 2018-02-22)N'oubliez pas d'ouvrir un nouveau shell, d'exécuter hash -rou export PATH=$PATHde recharger les chemins d'accès aux applications binaires (c'est-à-dire votre nouveau GNU grep).
Jonathan Komar
3
@ JonathanKomar malheureusement dans Homebrew version 2.0.0, l' indicateur --with-default-names n'est plus disponible.
Dez
5

Comme l'indiquent les commentaires, la réponse la mieux notée (de nohillside) doit être mise à jour comme suit:

Si grep a déjà été installé par brew, commencez par supprimer grep.

% brew uninstall grep

Puis installez 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

Notez que vous devez modifier le PATH. Par exemple, ajoutez à votre .bashrc:

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

Je devais faire ce qui précède sur mon mac quand, une fois que brew upgrademon grep n’était plus accessible (il avait déjà été installé avec brew install grep --with-default-names, et cette option n’est plus disponible).

Cette solution fonctionne à 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)

Cette réponse est basée sur celle de nohillside, avec les commentaires de Jonathan Komar et Scott M Gardner.

Timur Shtatland
la source
C'est mieux que la réponse acceptée.
smci