Grep

Grep

دشوار

مقدمه

شما در یک کتابخانه‌ی محلی شغلی گرفته‌اید و به سازماندهی مجموعه‌ی کتاب‌های قدیمی آن کمک می‌کنید. مراجعان دانشجو اغلب دنبال نقل‌قول‌هایی می‌گردند که نیمه‌یادشان مانده تا در مقاله‌های ترمشان به آن‌ها استناد کنند. به‌جای اینکه همه‌ی کتاب‌ها را دستی از جلد تا جلد بخوانید، تصمیم می‌گیرید ابزار کوچکی بسازید که آن‌ها را بررسی کند و این نقل‌قول‌های ناقص را پیدا کند.

دستورالعمل‌ها

فایل‌ها را برای یافتن خط‌هایی که با یک رشته‌ی جست‌وجو مطابقت دارند جست‌وجو کنید و همه‌ی خط‌های مطابق را برگردانید.

فرمان grep در Unix فایل‌ها را برای یافتن خط‌هایی که با یک عبارت باقاعده مطابقت دارند جست‌وجو می‌کند. وظیفه‌ی شما پیاده‌سازی یک فرمان ساده‌شده‌ی grep است که از جست‌وجوی رشته‌های ثابت پشتیبانی می‌کند.

فرمان grep سه آرگومان می‌گیرد:

  1. رشته‌ای که باید جست‌وجو شود.
  2. صفر یا چند گزینه برای سفارشی‌سازی رفتار فرمان.
  3. یک یا چند فایل برای جست‌وجو.

سپس محتوای فایل‌های مشخص‌شده را (به همان ترتیبی که مشخص شده‌اند) می‌خواند، خط‌هایی را که شامل رشته‌ی جست‌وجو هستند پیدا می‌کند و در پایان آن خط‌ها را به همان ترتیبی که پیدا شده‌اند برمی‌گرداند. هنگام جست‌وجو در چند فایل، به ابتدای هر خط مطابق، اسم فایل و یک دونقطه (':') اضافه می‌شود.

گزینه‌ها

فرمان grep از گزینه‌های زیر پشتیبانی می‌کند:

  • -n شماره‌ی خط و یک دونقطه (':') را به ابتدای هر خط در خروجی اضافه می‌کند و شماره را بعد از اسم فایل (در صورت وجود) قرار می‌دهد.
  • -l فقط اسم فایل‌هایی را خروجی می‌دهد که دست‌کم یک خط مطابق دارند.
  • -i مطابقت را با مقایسه‌ای بدون توجه به بزرگی و کوچکی حروف انجام می‌دهد.
  • -v برنامه را معکوس می‌کند: همه‌ی خط‌هایی را که مطابقت ندارند جمع می‌کند.
  • -x فقط خط‌هایی را جست‌وجو می‌کند که رشته‌ی جست‌وجو با کل خط مطابقت داشته باشد.
ویرایش از طریق GitHub این لینک در پنجره یا زبانه‌ی جدیدی باز می‌شود
Ruby Exercism

آماده‌اید Grep را شروع کنید؟

در Exercism ثبت‌نام کنید تا Ruby را همراه با 21 مفهوم121 تمرین و مربی‌گری انسانی واقعی یاد بگیرید و در آن استاد شوید، همه‌ی این‌ها رایگان.