Bazı günlerde grepping yapıyordum ve aniden, görünüşte önemsiz bir şeyin işe yaramadığını keşfettim:Grep [A-Z] yerelden bağımsız nasıl yapılır?
$ echo T | grep [A-Z]
Eşleşme yok.
T nasıl A-Z aralığında değil?
Normal ifadeyi biraz değiştirdim:
$ echo T | grep [A-Y]
Bir maç!
Whoa! A-Y içinde T nasıldır, fakat A-Z içinde değil midir?
Görünüşe göre bu benim ortamın Y'nin alfabenin sonunda olduğu fakat Z'nin ortada bir yerde olduğu Estonya yerel ayarına ayarlanmasıdır: ABCDEFGHIJKLMNOPQRSŠZŽTUVWÕÄÖÜXY
$ echo $LANG
et_EE.UTF-8
Bu her şeyden önce ben mi. Estonya edebiyatı değil, bilgisayar kodlarını grepür ettiğim zamanın% 99'u. Her zaman yanlış şekilde grep kullanıyor muyum? Geçmişte bunun yüzünden ne gibi hatalar yaptım?
Birkaç şeyi denedikten sonra şu çözüme ulaştım:
$ echo T | LANG=C grep [A-Z]
Bu grep yerel ayarını bağımsız yapmak için önerilen yol mu?
Daha da fazlası ...
$ alias grep="LANG=C grep"
PS gibi bir takma ad tanımlamak güvenli olur muydu? Ayrıca \w
locale gibi karakter aralığı ilk sırada yer alırken merak ediyorum da \w
yerel ayardan etkilenmez gibi görünüyor (manuel \w
[[:alnum:]]
'in karşılığı olsa da - ancak ikincisi \w
iken değil).
sadece kabuk olduğunu genişleyen olmadığından emin olmak için, bir kez daha tüm çalışıyorum, ama ifadenizi 'grep '[A-Z]'' teklifinizi veriniz. – Mat
Tam olarak tırnak içi ve tırnaksız olarak aynı şekilde çalışır. –
Sadece A'dan Z'ye adlı bir dosyanız olmadığı için aynı şekilde çalışır. Kabuk [A-Z] 'yi genişletmeye çalıştı, hiçbir şey bulamadı ve tek başına bıraktı. Desenleri her zaman grep'e geçirmek için teklifleri kullanın. – Gilbert