Как заставить 'grep' работать как в Ubuntu?

24

Я пытался использовать grepдля сопоставления с одним шаблоном на терминале, но никакого результата не выходит.

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

Я знал, что grepMacOS основан на BSD, а grepUbuntu основан на GNU.

Как заставить 'grep' работать на macOS как в Ubuntu?

SparkAndShine
источник

Ответы:

33

Когда эта -Rопция используется, MacOS grepтребует от вас явного указания каталога для поиска; например, укажите .для рекурсивного поиска в текущем каталоге:

grep -R 'networks' .
sideshowbarker
источник
9

В долгосрочной перспективе, вероятно, лучше всего установить инструменты на основе GNU или запустить Ubuntu виртуально. Оба доступны бесплатно.

brew install coreutils(чтобы запустить brewкоманду, вам нужно установить homebrew с https://brew.sh ) поместит GNU-версии инструментов на ваш путь. Ищите ggrepкоманду и, возможно, отдельный grepпакет для установки, так как coreutils имеет тенденцию со временем менять то, что он включает.

(РЕДАКТИРОВАТЬ: обратите внимание, что по состоянию на 2018 г. , в grepчастности, должны быть установлены отдельно отcoreutils следующих:

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

и имеет уникальное исполняемое имя ggrepс двумя буквами G.)

Также поиск здесь для GNU или coreutils будет полезен для контекста и подсказок / уловок.

bmike
источник
2
Обратите внимание, что, по крайней мере, сейчас grepне входит в coreutilsпакет, brewно в своем собственном пакете под названиемgrep
fejese
2
Также обратите внимание, что исполняемый файл ggrepтеперь называется (ведущий g).
Dotancohen
1
Спасибо @dotancohen - не стесняйтесь просто редактировать ответ, если вы уверены в ситуации. Существует история изменений, и мы всегда можем пообщаться в чате, если изменение неясно одному человеку или требует дальнейшей проверки / корректировки. +1 за комментарий - еще раз спасибо
bmike