Bagaimana cara membuat 'grep' berfungsi seperti di Ubuntu?

24

Saya mencoba menggunakan grepuntuk mencocokkan satu pola di terminal, tetapi tidak ada hasil yang keluar.

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

Saya tahu greppada macOS didasarkan pada BSD sementara grepdi Ubuntu didasarkan pada GNU.

Bagaimana membuat 'grep' berfungsi di macOS seperti di Ubuntu?

SparkAndShine
sumber

Jawaban:

33

Ketika -Ropsi ini digunakan, MacOS grepmengharuskan Anda untuk secara eksplisit memberikannya direktori untuk dicari; misalnya, tentukan .untuk menelusuri direktori saat ini secara rekursif:

grep -R 'networks' .
sontonbarker
sumber
9

Untuk jangka panjang, mungkin yang terbaik adalah menginstal alat berdasarkan GNU atau menjalankan Ubuntu secara virtual. Keduanya tersedia secara gratis.

brew install coreutils(untuk menjalankan brewperintah yang Anda butuhkan untuk menginstal homebrew dari https://brew.sh ) akan menempatkan versi GNU dari alat di jalur Anda. Cari ggrepperintah dan mungkin greppaket mandiri untuk diinstal karena coreut cenderung berubah seiring waktu termasuk apa.

(EDIT: Perhatikan bahwa pada 2018 , grepsecara khusus perlu diinstal secara terpisah daricoreutils sebagai berikut:

$ brew install grep
$ ggrep sometext file.txt     # Note the executable is called ggrep with two G's

dan memiliki nama yang dapat dieksekusi unik ggrepdengan dua G.)

Juga mencari GNU atau coreutils di sini akan membantu untuk konteks dan tips / trik.

bmike
sumber
2
Perhatikan bahwa setidaknya sekarang greptidak termasuk dalam coreutilspaket brewtetapi dalam paket sendiri yang disebutgrep
fejese
2
Perhatikan juga bahwa executable disebut ggrep(terkemuka g) sekarang.
dotancohen
1
Terima kasih @dotancohen - silakan mengedit jawaban jika Anda yakin dengan situasinya. Ada riwayat revisi dan kami selalu dapat mengobrol jika perubahan tidak jelas untuk satu orang atau perlu peninjauan / penyesuaian lebih lanjut. +1 untuk komentar - terima kasih lagi
bmike