Jak sprawić, by „grep” działał jak w Ubuntu?

25

Próbowałem użyć, grepaby dopasować jeden wzór na terminalu, ale nie pojawia się żaden wynik.

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

Wiedziałem, że grepMacOS jest oparty na BSD, podczas gdy grepUbuntu opiera się na GNU.

Jak sprawić, by „grep” działał na macOS jak w Ubuntu?

SparkAndShine
źródło

Odpowiedzi:

34

Gdy -Rużywana jest ta opcja, MacOS grepwymaga jawnego nadania jej katalogu do przeszukiwania; na przykład określ .rekurencyjne przeszukiwanie bieżącego katalogu:

grep -R 'networks' .
sidehowbarker
źródło
9

W dłuższej perspektywie prawdopodobnie najlepiej zainstalować narzędzia oparte na GNU lub uruchomić Ubuntu wirtualnie. Oba są dostępne za darmo.

brew install coreutils(aby uruchomić brewpolecenie, musisz zainstalować homebrew z https://brew.sh ) umieści wersje GNU narzędzi na twojej ścieżce. Poszukaj ggreppolecenia i być może samodzielnego greppakietu do zainstalowania, ponieważ coreutils zwykle zmieniają się wraz z upływem czasu.

(EDYCJA: Należy pamiętać, że od 2018 r. grepNależy go zainstalować osobno,coreutils w następujący sposób:

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

i ma unikalną nazwę wykonywalną ggrepz dwoma symbolami G.)

Również wyszukiwanie GNU lub coreutils będzie pomocne dla kontekstu i wskazówek / sztuczek.

bmike
źródło
2
Zwróć uwagę, że przynajmniej teraz grepnie jest on zawarty w coreutilspakiecie, brewale we własnym pakiecie o nazwiegrep
fejese,
2
Zauważ też, że plik wykonywalny jest teraz nazywany ggrep(wiodącym g).
dotancohen
1
Dzięki @dotancohen - zachęcamy do edycji odpowiedzi, jeśli jesteś pewien sytuacji. Istnieje historia zmian i zawsze możemy porozmawiać, jeśli zmiana jest niejasna dla jednej osoby lub wymaga dalszego przeglądu / korekty. +1 za komentarz - jeszcze raz dziękuję
bmike