Komputer saya menjalankan macOS 10.12.3 dan saya menggunakan sistem yang diinstal grep
utilitas yang dengan versi 2.5.1-FreeBSD.
Ini adalah output yang saya dapatkan ketika menguji berbagai regex:
Tetapi jika saya menjalankan ini menggunakan GNU grep (versi 2.25) saya mendapatkan yang berikut:
Grep GNU terlihat benar bagi saya dan BSD salah, bukan? Mengapa mereka berbeda? Saya tidak mengerti mengapa grep BSD cocok dengan "a" ketika regex menentukan bahwa itu harus mengikuti awal baris.
2
Silakan melaporkan perilaku pertama sebagai bug.
—
Satō Katsura
Anda akan melihat bahwa
—
Stéphane Chazelas
echo 'bababa' | grep -E '^(a|b)'
semuanya berwarna merah. Dan Anda akan memiliki masalah yang sama dengannya -o
. Saya kira, grep
mencari beberapa pertandingan, tetapi untuk pertandingan kedua dan selanjutnya, itu berlaku regexp untuk apa yang ada di sebelah kanan dari apa yang cocok dengan waktu sebelumnya (begitu juga pada anana
kedua kalinya dalam kasus Anda) tanpa melewati bendera REG_NOTBOL. Lihat jugaecho banana | grep -Eo '^ban|^ana$'
@JdeBP, pada OS X saya,
—
ilkkachu
grep
mengidentifikasi dirinya sebagai grep (BSD grep) 2.5.1-FreeBSD
halaman manual yang merujuk ke GNU hanya dengan menyebutkan "opsi panjang yang disediakan untuk kompatibilitas dengan versi GNU". Juga, tidak ada pemberitahuan hak cipta atau menyebutkan GPL (atau FSF). Jika memiliki sejarah dengan util GNU, sulit untuk mengatakannya.
Kami menunjukkan bagaimana ini menyesatkan. (-: Yang
—
JdeBP
grep
dibahas dalam jawaban Decade Moon yang oleh banyak orang dianggap benar diidentifikasi sebagai grep (GNU grep) 2.5.1-FreeBSD
(seperti dapat dilihat dalam diskusi bug), memiliki pemberitahuan hak cipta FSF, dan yang paling pasti adalah GNU grep
. Apa yang disebut FreeBSD bsdgrep
adalah apa yang OpenBSD maksudkan oleh OpenBSD panggilan grep
dan BSD grep
, dengan tidak ada --color
opsi mengalahkan varian FreeBSD. Itulah yang diidentifikasi sebagai grep (BSD grep) 2.5.1-FreeBSD
, dan ironisnya adalah apa yang satu orang dalam diskusi bug menyarankan agar FreeBSD beralih grep
ke.