Saya menjawab pertanyaan ini pada SuperUser yang merupakan sesuatu yang berkaitan dengan jenis ekspresi Reguler yang digunakan saat menerima keluaran.
Jawaban yang saya berikan adalah ini:
tail -f log | grep "some_string.*some_string"
Dan kemudian, Dalam tiga komentar untuk jawaban saya @ Bob menulis ini:
.*
serakah dan mungkin menangkap lebih dari yang Anda inginkan..*?
biasanya lebih baik.
Lalu ini,
itu
?
adalah pengubah aktif*
, menjadikannya malas bukannya default serakah. Dengan asumsi PCRE.
Saya mencari di Google PCRE
, tetapi tidak bisa mendapatkan apa arti dari ini dalam jawaban saya?
dan akhirnya ini,
Saya juga harus menunjukkan bahwa ini adalah regex (grep melakukan POSIX regex secara default), bukan shell glob.
Saya hanya tahu apa itu Regex dan penggunaannya yang sangat mendasar dalam perintah grep. Jadi, saya tidak bisa mendapatkan salah satu dari 3 komentar itu dan saya memiliki pertanyaan ini dalam pikiran:
- Apa perbedaan dalam penggunaan
.*?
vs.*
? - Mana yang lebih baik dan dalam keadaan apa? Tolong berikan contoh.
Juga akan sangat membantu untuk memahami komentar, Jika ada yang bisa
PEMBARUAN: Sebagai jawaban atas pertanyaan. Apa perbedaan Regex dari Shell Glob? @ Kusalananda memberikan tautan ini dalam komentarnya.
CATATAN: Jika perlu, Harap baca jawaban saya untuk pertanyaan ini sebelum menjawab untuk merujuk pada konteks.
.*
vs. .*?
Pertanyaan "perbedaan antara ekspresi reguler dan gumpalan shell" telah ditanggapi di situs ini.