วิธีการทำให้ 'grep' ทำงานเหมือนใน Ubuntu


25

ฉันพยายามใช้grepเพื่อจับคู่หนึ่งรูปแบบบนเทอร์มินัล แต่ไม่มีผลลัพธ์ใด ๆ ออกมา

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

ฉันรู้ว่าgrepmacOS ใช้ BSD ในขณะgrepที่ Ubuntu นั้นใช้ GNU

วิธีการทำให้ 'grep' ทำงานบน macOS เหมือนใน Ubuntu ได้อย่างไร

คำตอบ:


34

เมื่อใช้-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
ขอบคุณ @dancancohen - อย่าลังเลที่จะแก้ไขคำตอบหากคุณมั่นใจในสถานการณ์ มีประวัติการแก้ไขและเราสามารถแชทได้ตลอดเวลาหากการเปลี่ยนแปลงไม่ชัดเจนสำหรับบุคคลหนึ่งคนหรือต้องการตรวจสอบ / ปรับเพิ่มเติม +1 สำหรับความคิดเห็น - ขอบคุณอีกครั้ง
bmike
โดยการใช้ไซต์ของเรา หมายความว่าคุณได้อ่านและทำความเข้าใจนโยบายคุกกี้และนโยบายความเป็นส่วนตัวของเราแล้ว
Licensed under cc by-sa 3.0 with attribution required.