Cách cài đặt và sử dụng GNU Grep trong OSX


50

Tôi có coreutils nhưng tôi không chắc là GNU grep có ở đó không. Tôi chỉ muốn sử dụng cờ -Pcho Perl regex được tìm thấy trong GNU grep, nhưng không phải trong BSD grep.

PATH của tôi là /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/binvì vậy tôi có coreutils đầu tiên trong PATH.

Tuy nhiên, grep là BSD khi tôi đang sử dụng nó: grep --versioncho grep (BSD grep) 2.5.1-FreeBSD.

Lệnh type -p greptrả về/usr/bin/grep

Làm thế nào bạn có thể cài đặt GNU Grep trong OSX?

Câu trả lời:


72

GNU grep không phải là một phần của coreutils. Để cài đặt, chạy

brew install grep

Như với coreutils, điều này không tự động thay thế grep hiện có

==> 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
Khi tôi làm điều này, tôi grepvẫn là một FreeBSD, nhưng egrepfgreplà GNU. Làm cách nào để đặt mặc định grepthành GNU? (Tôi đã sử dụng --with-default-names)
Juicy

3
@juicy bạn đã thử cái này trong một cái vỏ mới chưa?
nohillside

3
Để tham khảo, lệnh GNU grep được đặt tênggrep
Will Sheppard

2
Chạy brew uninstall grep(hoặc brew remove grep) nếu đã được cài đặt và ưu tiên brew install grep --with-default-namesGNU greptrên dòng lệnh. Đã kiểm tra với Homebrew 1.5.4 Homebrew/homebrew-core (git revision 3bb326; last commit 2018-02-22)Đừng quên mở shell mới hoặc chạy hash -rhoặc export PATH=$PATHtải lại các đường dẫn đến các ứng dụng nhị phân (tức là GNU grep mới của bạn).
Jonathan Komar

3
@JonathanKomar không may trong phiên bản Homebrew 2.0.0, cờ --with-default-name không còn khả dụng.
Dez

5

Như các ý kiến ​​chỉ ra, câu trả lời được đánh giá cao nhất (từ nohillside) cần cập nhật như sau:

Nếu grep đã được cài đặt bởi brew, hãy xóa grep trước.

% brew uninstall grep

Sau đó cài đặt 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

Lưu ý rằng bạn cần phải sửa đổi PATH. Ví dụ: thêm vào .bashrc của bạn:

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

Tôi đã phải làm như trên trên máy mac của mình khi sau khi brew upgradegrep của tôi không còn truy cập được nữa (nó đã được cài đặt trước đó brew install grep --with-default-namesvà tùy chọn này không còn khả dụng nữa).

Giải pháp này hoạt động như của Homebrew 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)

Câu trả lời này dựa trên câu trả lời từ nohillside, với ý kiến ​​từ Jonathan Komar và người làm vườn scott m.


Điều này tốt hơn câu trả lời được chấp nhận.
smci
Khi sử dụng trang web của chúng tôi, bạn xác nhận rằng bạn đã đọc và hiểu Chính sách cookieChính sách bảo mật của chúng tôi.
Licensed under cc by-sa 3.0 with attribution required.