আমি echo file|grep fil*
ব্যর্থতা পেয়েছি , কিন্তু echo abcd|grep abc*
সফল।
আমি এটা বুঝতে পারি না, কেউ ব্যাখ্যা করতে পারেন?
আমি echo file|grep fil*
ব্যর্থতা পেয়েছি , কিন্তু echo abcd|grep abc*
সফল।
আমি এটা বুঝতে পারি না, কেউ ব্যাখ্যা করতে পারেন?
উত্তর:
আপনার উদাহরণের সাথে দুটি সমস্যা আছে।
প্রাথমিক আপনি অভিমানী করছি যে যে রেগুলার এক্সপ্রেশনের হিসাবে একই কাজ উল্লিখিত glob নিদর্শন যে *
একটি ওয়াইল্ড কার্ড অর্থ হল "অক্ষরের কোনো ক্রম।" নিয়মিত প্রকাশে, *
এর পরিবর্তে "পূর্ববর্তী পরমাণুর যে কোনও সংখ্যক" এর fil*
অর্থ, f
তারপরে i
শূন্য বা তার বেশি l
অক্ষর দ্বারা অনুসরণ করা । grep fil.*
উদ্দেশ্যে হওয়া অর্থটি পেতে আপনাকে বলতে হবে: এর .
অর্থ "কোনও একক অক্ষর, যার .*
অর্থ" অক্ষরের কোনও ক্রম। "
কম সমস্যাটি হ'ল আপনি অব্যক্ত বিশেষ অক্ষরগুলি ব্যবহার করছেন যার অর্থ গ্লোব বিধিগুলির অধীনে কিছু, যার অর্থ শেলটি তাদের ব্যাখ্যা করতে পারে। আপনি উল্লিখিত glob নিদর্শন মিলে স্থানীয় ডিরেক্টরির মধ্যে কোনো ফাইল ছিল fil*
বা abc*
, শেল তাদের প্রসারিত হবে , তাই grep
প্রসারিত ফাইলের নাম একটি প্যাটার্ন, না দেয়ার উদ্দেশ্যে পুনরায়- যেমন পেতে হবে। যখনই আপনি কমান্ড লাইন এই ধরনের অক্ষর ব্যবহার করে, আপনি তাদের মূল্যউদ্ধৃতি উচিত: echo file | grep 'fil.*'
।
echo file|grep fil*
সহ উত্তরগুলিfil
।