Installation und Verwendung von GNU Grep unter OSX

48

Ich habe Coreutils, bin mir aber nicht sicher, ob GNU grep vorhanden ist. Ich möchte nur das Flag -Pfür Perl-Regex verwenden, das in GNU grep zu finden ist, aber nicht in BSD grep.

Mein PATH ist /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/binso, dass ich Coreutils zuerst im PATH habe.

Grep ist jedoch BSD, wenn ich es benutze: grep --versiongibt grep (BSD grep) 2.5.1-FreeBSD.

Befehl type -p grepkehrt zurück/usr/bin/grep

Wie kann man GNU Grep in OSX installieren?

Léo Léopold Hertz 준영
quelle

Antworten:

70

GNU grep gehört nicht zu coreutils. Führen Sie zum Installieren Folgendes aus

brew install grep

Wie bei coreutils ersetzt dies nicht automatisch das vorhandene grep

==> 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
quelle
2
Wenn ich das tue, ist mein grepimmer noch das FreeBSD, aber egrepund fgrepsind GNU. Wie kann ich den Standard grepauf GNU setzen? (Ich habe verwendet --with-default-names)
Juicy
3
@juicy hast du das in einer neuen shell probiert?
Nohillside
3
Als Referenz wird der GNU grep Befehl namensggrep
Will Sheppard
2
Führen Sie brew uninstall grep(oder brew remove grep) aus, falls bereits installiert, und brew install grep --with-default-namesgeben Sie GNU grepin der Befehlszeile den Vorrang. Getestet mit Homebrew 1.5.4 Homebrew/homebrew-core (git revision 3bb326; last commit 2018-02-22)Vergessen Sie nicht, eine neue Shell zu öffnen oder auszuführen hash -roder export PATH=$PATHdie Pfade zu Binäranwendungen (dh Ihrem neuen GNU-grep) neu zu laden.
Jonathan Komar
3
@JonathanKomar In der Homebrew-Version 2.0.0 ist das Flag --with-default-names leider nicht mehr verfügbar.
Dez
4

Wie aus den Kommentaren hervorgeht, muss die bestbewertete Antwort (von nohillside) wie folgt aktualisiert werden:

Wenn grep bereits von brew installiert wurde, entfernen Sie zuerst grep.

% brew uninstall grep

Dann installiere 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

Beachten Sie, dass Sie den PFAD ändern müssen. Fügen Sie Ihrer .bashrc beispielsweise Folgendes hinzu:

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

Ich musste das oben genannte auf meinem Mac ausführen, als brew upgrademein grep nicht mehr brew install grep --with-default-namesverfügbar war (es wurde zuvor mit installiert und diese Option ist nicht mehr verfügbar).

Diese Lösung funktioniert ab 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)

Diese Antwort basiert auf der von Nohillside mit Kommentaren von Jonathan Komar und Scott Gardner.

Timur Shtatland
quelle