grepএকটি চরিত্রের ধারণা স্থানীয়-নির্ভর । যদি আপনি কোনও অ-ইউনিকোড লোকালে থাকেন এবং আপনি কোনও ইউনিকোড অক্ষরযুক্ত একটি ফাইল থেকে গ্রেপ করেন তবে অক্ষরটির সংখ্যা মেলে না। আপনি যদি echo $LANGতখন থাকেন তবে আপনি যে লোকালটি রয়েছেন তা দেখতে পাবেন।
আপনি যদি ".UTF-8" দিয়ে শেষ হওয়া কোনও মানটিতে LC_CTYPEএবং / অথবা LANGপরিবেশের ভেরিয়েবলগুলি সেট করেন তবে আপনি সঠিক আচরণ পাবেন:
$ cat data
étuis
letter
éééééé
$ LANG=C grep -E '^.{6}$' data
étuis
letter
$ LANG=en_US.UTF_8 grep -E '^.{6}$' data
letter
éééééé
$
কমান্ডের মতো একই লাইনে ভেরিয়েবল নির্ধারণ করে আপনি কেবল একটি কমান্ডের জন্য আপনার স্থানীয় অবস্থান পরিবর্তন করতে পারেন।
এই কনফিগারেশনের মাধ্যমে, বহু-বাইট অক্ষরগুলি একক অক্ষর হিসাবে বিবেচিত হয়। আপনি যদি পুরোপুরি ASCII অক্ষরগুলি পুরোপুরি বাদ দিতে চান তবে অন্যান্য উত্তরের কয়েকটিতে আপনার সমাধান রয়েছে।
নোট করুন যে জিনিসগুলির পক্ষে ভাঙ্গা এখনও সম্ভব, বা কমপক্ষে আপনি যা আশা করেছিলেন ঠিক তেমনটি না করে, অক্ষরের সংমিশ্রণের উপস্থিতিতে । আপনার grepল্যাটিন ছোট লেটার ই + মিশ্রন বর্ণনামূলক অ্যাকুট উপরের সাথে ল্যাটিন ছোট লেটার ই এর চেয়ে আলাদা আচরণ করতে পারে।
.মতো কিছুwăsd'sমিলবে