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


24

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

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

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

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

Ответы:


33

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

grep -R 'networks' .

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 будет полезен для контекста и подсказок / уловок.


2
Обратите внимание, что, по крайней мере, сейчас grepне входит в coreutilsпакет, brewно в своем собственном пакете под названиемgrep
fejese

2
Также обратите внимание, что исполняемый файл ggrepтеперь называется (ведущий g).
Dotancohen

1
Спасибо @dotancohen - не стесняйтесь просто редактировать ответ, если вы уверены в ситуации. Существует история изменений, и мы всегда можем пообщаться в чате, если изменение неясно одному человеку или требует дальнейшей проверки / корректировки. +1 за комментарий - еще раз спасибо
bmike
Используя наш сайт, вы подтверждаете, что прочитали и поняли нашу Политику в отношении файлов cookie и Политику конфиденциальности.
Licensed under cc by-sa 3.0 with attribution required.