Wie funktioniert 'grep' wie in Ubuntu?

24

Ich habe versucht, grepein Muster auf dem Terminal abzugleichen, aber es kommt kein Ergebnis heraus.

$ grep -R 'networks'
grep: warning: recursive search of stdin

Ich wusste, dass grepMacOS auf BSD basiert, während grepUbuntu auf GNU basiert.

Wie kann man 'grep' unter macOS wie in Ubuntu zum Laufen bringen?

SparkAndShine
quelle

Antworten:

33

Wenn die -ROption verwendet wird, grepmüssen Sie unter MacOS explizit ein Verzeichnis für die Suche angeben. Geben Sie beispielsweise an, dass .das aktuelle Verzeichnis rekursiv durchsucht werden soll:

grep -R 'networks' .
Sideshowbarker
quelle
9

Langfristig ist es wahrscheinlich am besten, die auf GNU basierenden Tools zu installieren oder Ubuntu virtuell auszuführen. Beide sind kostenlos erhältlich.

brew install coreutils(Um den brewBefehl auszuführen , müssen Sie Homebrew von https://brew.sh installieren ) werden die GNU-Versionen der Tools in Ihren Pfad eingefügt. Suchen Sie nach dem ggrepBefehl und möglicherweise nach einem eigenständigen grepPaket, das installiert werden soll, da sich die Coreutils im Laufe der Zeit tendenziell ändern.

(EDIT: Beachten Sie, dass ab 2018 , grepmuss speziell von separat installiert werdencoreutils , wie folgt:

$ brew install grep
$ ggrep sometext file.txt     # Note the executable is called ggrep with two G's

und hat einen eindeutigen ausführbaren Namen ggrepmit zwei Gs.)

Auch die Suche hier nach GNU oder Coreutils ist hilfreich für Kontext und Tipps / Tricks.

bmike
quelle
2
Beachten Sie, dass zumindest jetzt grepnicht im coreutilsPaket enthalten ist, brewsondern in einem eigenen Paket namensgrep
fejese
2
Beachten Sie auch, dass die ausführbare Datei ggrepjetzt aufgerufen wird (führendes g).
Dotancohen
1
Danke @dotancohen - Sie können einfach eine Antwort bearbeiten, wenn Sie sich der Situation sicher sind. Es gibt einen Revisionsverlauf und wir können uns jederzeit unterhalten, wenn eine Änderung für eine Person unklar ist oder weitere Überprüfungen / Anpassungen erforderlich sind. +1 für den Kommentar - nochmals
vielen