আপনি একটি স্থানীয় লাইব্রেরিতে চাকরি নিয়েছেন, সেখানকার পুরনো বইয়ের সংগ্রহ গুছিয়ে রাখতে সাহায্য করবেন। শিক্ষার্থী পাঠকেরা প্রায়ই তাদের টার্ম পেপারে উদ্ধৃতি দেওয়ার জন্য অর্ধেক-মনে-পড়া কোনো বাক্য খুঁজতে থাকে। প্রতিটি বই শুরু থেকে শেষ পর্যন্ত নিজে পড়ার বদলে, আপনি সেগুলো স্ক্যান করার জন্য একটি ছোট টুল বানানোর সিদ্ধান্ত নিলেন, যাতে ওই আংশিক উদ্ধৃতিগুলো খুঁজে পাওয়া যায়।
একটি সার্চ স্ট্রিং-এর সাথে মেলে এমন লাইন ফাইলগুলোতে খুঁজুন এবং মেলে যাওয়া সব লাইন রিটার্ন করুন।
ইউনিক্সের grep কমান্ড রেগুলার এক্সপ্রেশনের সাথে মেলে এমন লাইন ফাইলগুলোতে খোঁজে।
আপনার কাজ হলো একটি সরলীকৃত grep কমান্ড তৈরি করা, যা নির্দিষ্ট স্ট্রিং খোঁজার সুবিধা দেয়।
grep কমান্ড তিনটি আর্গুমেন্ট নেয়:
এরপর এটি নির্দিষ্ট করা ফাইলগুলোর বিষয়বস্তু (নির্দিষ্ট করা ক্রমে) পড়ে, যে লাইনগুলোতে সার্চ স্ট্রিং আছে সেগুলো খুঁজে বের করে, এবং সবশেষে যে ক্রমে লাইনগুলো পাওয়া গেছে সেই ক্রমে সেগুলো রিটার্ন করে। একাধিক ফাইলে খোঁজার সময়, প্রতিটি মেলে যাওয়া লাইনের শুরুতে ফাইলের নাম ও একটি কোলন (':') যোগ করা হয়।
grep কমান্ড নিচের ফ্ল্যাগগুলো সমর্থন করে:
-n আউটপুটের প্রতিটি লাইনের আগে লাইন নম্বর ও একটি কোলন (':') বসান, ফাইলের নাম থাকলে নম্বরটি তার পরে বসান।-l শুধু সেই ফাইলগুলোর নাম আউটপুট করুন যেগুলোতে অন্তত একটি মেলে যাওয়া লাইন আছে।-i কেস-ইনসেনসিটিভ তুলনা ব্যবহার করে মেলান।-v প্রোগ্রামটি উল্টে দিন: যে লাইনগুলো মেলে না সেগুলো সংগ্রহ করুন।-x শুধু সেই লাইনগুলো খুঁজুন যেখানে সার্চ স্ট্রিং পুরো লাইনের সাথে মেলে।Arturo-এর বেশিরভাগ অনুশীলনীর বিপরীতে, src/grep.art সরাসরি টেস্ট স্যুট দ্বারা ইমপোর্ট করা হবে না।
এর বদলে আপনার সলিউশন আলাদা একটি Arturo স্ক্রিপ্ট হিসেবে রান করা হবে, যা একগুচ্ছ কমান্ড-লাইন আর্গুমেন্ট পাবে।
এই কমান্ড-লাইন আর্গুমেন্টগুলো অ্যাক্সেস করতে আপনি argarg বা argsargs ব্যবহার করতে পারেন; এগুলোতে শূন্য বা তার বেশি ফ্ল্যাগ, একটি সার্চ প্যাটার্ন এবং এক বা একাধিক ফাইলনাম থাকে।
এই ফাইলগুলো রানটাইমে টেস্ট স্যুট তৈরি করে এবং সেগুলোতে ডেটা ভরে দেয়।
আপনার সলিউশনকে চাওয়া ফাইলটি পড়তে হবে এবং প্রত্যাশিত আউটপুট স্ট্যান্ডার্ড আউটপুটে লিখতে হবে।
Exercism-এ সাইন আপ করুন, Arturo ট্র্যাকের 79টি অনুশীলনী আর সত্যিকারের মানুষের মেন্টরিং দিয়ে শিখুন ও দক্ষ হয়ে উঠুন, সম্পূর্ণ বিনামূল্যে।