echo file|grep fil*
Başarısız buldum ama echo abcd|grep abc*
başarılı oldum .
Anlamıyorum, biri açıklayabilir mi?
echo file|grep fil*
Başarısız buldum ama echo abcd|grep abc*
başarılı oldum .
Anlamıyorum, biri açıklayabilir mi?
Yanıtlar:
Örneğinizde iki sorun var.
Birincisi, düzenli ifadelerin "herhangi bir karakter dizisi" anlamına gelen bir joker karakter olan glob desenleriyle aynı şekilde çalıştığını varsaymanızdır *
. Normal ifadelerde, *
bunun yerine "önceki atomun herhangi bir sayısı" fil*
anlamına gelir , bu nedenle f
bunu i
sıfır veya daha fazla l
karakter izler . grep fil.*
Amaçlanan anlamı elde etmek için söylemelisiniz : .
"herhangi bir tek karakter, yani .*
" herhangi bir karakter dizisi "anlamına gelir.
Daha az sorun, glob kuralları altında bir şey anlamına gelen, kabuğun bunları yorumlayabileceği anlamına gelen alıntılanmamış özel karakterler kullanmanızdır. Glob modellerle eşleşen yerel dizindeki tüm dosyaları olsaydı fil*
ya abc*
, bunları genişletecek kabuk , bu nedenle grep
bir model değil, amaçlanan RE olarak genişletilmiş dosya adları tanınacak. Eğer komut satırında bu tür karakterleri kullanarak olduğunuzda tek onları alıntı olmalıdır: echo file | grep 'fil.*'
.
echo file|grep fil*
birlikte cevaplarfil
e.