Come installare e usare GNU Grep in OSX


50

Ho coreutils ma non sono sicuro che GNU grep sia lì. Voglio solo usare la bandiera -Pper il regex del Perl che si trova in GNU grep, ma non in BSD grep.

Il mio PERCORSO è /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/binquindi ho coreutils prima nel PERCORSO.

Tuttavia, grep è BSD quando lo sto usando: grep --versiongrep (BSD grep) 2.5.1-FreeBSD.

Il comando type -p grepritorna/usr/bin/grep

Come si installa GNU Grep in OSX?

Risposte:


72

GNU grep non fa parte dei coreutils. Per installare, eseguire

brew install grep

Come con coreutils, questo non sostituisce automaticamente il grep esistente

==> 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
Quando lo faccio, il mio grepè ancora quello di freeBSD, ma egrepe fgrepsono GNU. Come posso impostare il default grepsu GNU? (Ho usato --with-default-names)
Succoso

3
@juicy hai provato questo in una nuova shell?
Nohillside

3
Per riferimento, il comando GNU grep è chiamatoggrep
Will Sheppard,

2
Esegui brew uninstall grep(o brew remove grep) se già installato e brew install grep --with-default-namesper dare la grepprecedenza a GNU dalla riga di comando. Testato con Homebrew 1.5.4 Homebrew/homebrew-core (git revision 3bb326; last commit 2018-02-22)Non dimenticare di aprire una nuova shell o eseguire hash -ro export PATH=$PATHricaricare i percorsi di applicazioni binarie (ad es. Il tuo nuovo grep GNU).
Jonathan Komar il

3
@JonathanKomar sfortunatamente nella versione Homebrew 2.0.0 il flag --with-default-names non è più disponibile.
Dez

5

Come indicano i commenti, la risposta più votata (da nohillside) deve essere aggiornata come segue:

Se grep era già installato da brew, rimuovere prima grep.

% brew uninstall grep

Quindi installare 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

Si noti che è necessario modificare il PERCORSO. Ad esempio, aggiungi al tuo .bashrc:

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

Ho dovuto fare quanto sopra sul mio mac quando dopo che il brew upgrademio grep non era più accessibile (era stato installato in precedenza con brew install grep --with-default-namese questa opzione non è più disponibile).

Questa soluzione funziona con 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)

Questa risposta si basa su quella di Nohillside, con commenti di Jonathan Komar e Scott Gardner.


Questo è meglio della risposta accettata.
smci,
Utilizzando il nostro sito, riconosci di aver letto e compreso le nostre Informativa sui cookie e Informativa sulla privacy.
Licensed under cc by-sa 3.0 with attribution required.