Як встановити та використовувати GNU Grep в OSX


50

У мене є coreutils, але я не впевнений, чи є GNU grep. Я просто хочу використовувати прапор -Pдля регулярного виразів Perl, який знаходиться в GNU grep, але не в BSD grep.

Мій PATH - /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/binзначить, я першими в PATH маю coreutils.

Однак, grep - це BSD, коли я його використовую: grep --versionдає grep (BSD grep) 2.5.1-FreeBSD.

Команда type -p grepповертається/usr/bin/grep

Як можна встановити GNU Grep в OSX?

Відповіді:


72

GNU grep не входить до основних ядер. Щоб встановити, запустіть

brew install grep

Як і у Coreutils, це автоматично не замінює існуючий греп

==> Caveats
The command has been installed with the prefix "g".
If you do not want the prefix, install using the "with-default-names" option.

2
Коли я роблю це мій grepще регент один, але egrepі fgrepє GNU. Як я можу встановити за замовчуванням grepGNU? (Я користувався --with-default-names)
Соковитий

3
@juicy Ви спробували це в новій оболонці?
nohillside

3
Для довідки названа команда grep GNUggrep
Will Sheppard

2
Запустіть brew uninstall grep(або brew remove grep), якщо він уже встановлений, і brew install grep --with-default-namesнадати grepперевагу GNU в командному рядку. Тестований за допомогою Homebrew 1.5.4 Homebrew/homebrew-core (git revision 3bb326; last commit 2018-02-22)Не забудьте відкрити нову оболонку або запустити hash -rабо export PATH=$PATHперезавантажити шляхи до двійкових програм (тобто нового GNU grep).
Джонатан Комар

3
@JonathanKomar, на жаль, у Homebrew версії 2.0.0 прапор --with -name-default-names більше не доступний.
Дез

5

Як зазначають коментарі, відповідь з найвищим рейтингом (з півночі) потребує оновлення наступним чином:

Якщо grep вже був встановлений заваркою, спочатку видаліть grep.

% brew uninstall grep

Потім встановіть 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

Зауважте, що вам потрібно змінити PATH. Наприклад, додайте у свій .bashrc:

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

Мені довелося робити вище на своєму mac, коли після того, як brew upgradeмій греп не був доступний (він був встановлений раніше brew install grep --with-default-names, і ця опція більше недоступна)

Це рішення працює з домашньої версії 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)

Ця відповідь ґрунтується на відповіді з nohillside, із коментарями Джонатана Комара та Скотта м Гарднера.


Це краще, ніж прийнята відповідь.
smci
Використовуючи наш веб-сайт, ви визнаєте, що прочитали та зрозуміли наші Політику щодо файлів cookie та Політику конфіденційності.
Licensed under cc by-sa 3.0 with attribution required.