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?

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.

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.


C'est mieux que la réponse acceptée.
smci
En utilisant notre site, vous reconnaissez avoir lu et compris notre politique liée aux cookies et notre politique de confidentialité.
Licensed under cc by-sa 3.0 with attribution required.