วิธีติดตั้งและใช้ GNU Grep ใน OSX


50

ฉันมี coreutils แต่ฉันไม่แน่ใจว่า GNU grep อยู่ที่นั่นหรือไม่ ฉันแค่ต้องการใช้การตั้งค่าสถานะ-Pสำหรับ Perl regex ที่พบใน GNU grep แต่ไม่ใช่ใน grep BSD

เส้นทางของฉันคือ/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ฉันมี coreutils ก่อนในเส้นทาง

อย่างไรก็ตาม grep เป็น BSD เมื่อฉันใช้มันให้grep --versiongrep (BSD grep) 2.5.1-FreeBSD

คำสั่งtype -p grepส่งคืน/usr/bin/grep

คุณจะติดตั้ง GNU Grep ใน OSX ได้อย่างไร?

คำตอบ:


72

GNU grep ไม่ได้เป็นส่วนหนึ่งของ coreutils หากต้องการติดตั้งให้เรียกใช้

brew install grep

เช่นเดียวกับ coreutils สิ่งนี้ไม่ได้แทนที่ grep ที่มีอยู่โดยอัตโนมัติ

==> 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ยังคงเป็น FreeBSD หนึ่ง แต่egrepและfgrepจะ GNU ฉันจะตั้งค่าเริ่มต้นgrepเป็น GNU ได้อย่างไร (ฉันใช้ไม่ได้--with-default-names)
Juicy

3
@juicy คุณลองสิ่งนี้ในเชลล์ใหม่หรือไม่?
nohillside

3
สำหรับการอ้างอิงคำสั่ง grep GNU มีชื่อว่าggrep
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โหลดเส้นทางไปยังโปรแกรมประยุกต์ไบนารี (เช่น grep GNU ใหม่ของคุณ)
Jonathan Komar

3
@JonathanKomar น่าเสียดายที่ใน Homebrew เวอร์ชัน 2.0.0 -แฟล็ก --with-default-namesไม่สามารถใช้ได้อีกต่อไป
Dez

5

ตามความคิดเห็นที่ระบุไว้คำตอบที่ได้รับคะแนนสูงสุด (จาก nohillside) จำเป็นต้องอัปเดตดังนี้:

หาก grep ถูกติดตั้งโดย Brew แล้วให้ลบ 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 upgradegrep ของฉันไม่สามารถเข้าถึงได้อีกต่อไป (มันถูกติดตั้งก่อนหน้านี้ด้วยbrew install grep --with-default-namesและตัวเลือกนี้ไม่สามารถใช้ได้อีก)

วิธีนี้ใช้งานได้กับ 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)

คำตอบนี้มีพื้นฐานมาจากคำว่า nohillside โดยมีข้อคิดเห็นจาก Jonathan Komar และ scott m gardner


นี่คือคำตอบที่ดีกว่า
smci
โดยการใช้ไซต์ของเรา หมายความว่าคุณได้อ่านและทำความเข้าใจนโยบายคุกกี้และนโยบายความเป็นส่วนตัวของเราแล้ว
Licensed under cc by-sa 3.0 with attribution required.