گرپ

بندانگشتی|مرتبط
**گرپ**  یک نرم‌افزار خط فرمان است که برای جستجو کردن در داده‌ها و پیدا کردن خطوطی که با یک عبارت باقاعده منطبق هستند، استفاده می‌شود. گرپ در اصل برای سیستم‌عامل یونیکس نوشته شد اما امروزه برای تمام سیستم‌عامل‌های شبه یونیکس موجود است. نام گرپ از دستور g/re/p در ویرایشگر متن اد می‌آید. (مخفف عبارت **g**lobally search a **r**egular **e**xpression and **p**rint به معنی یک عبارت باقاعده را به صورت سراسری جستجو و چاپ کن) که همان کار را انجام می‌دهد: یک فایل (یا ورودی استاندارد یا هر داده دیگری) را به صورت سراسری جستجو کرده و خطوطی که با یک عبارت باقاعده منطبق هستند را پیدا کرده و در خروجی استاندارد چاپ می‌کند.

در ویرایشگر ed که توسط کن تامسون نوشته شده بود، دستوری وجود داشت که خطوطی که حاوی یک الگوی خاص بودند را چاپ می‌کرد. کن تامسون برنامه گرپ را به صورت مستقل برای انجام این کار طراحی کرد تا نیازی به ed نباشد. در صفحه راهنمایی که در نسخه ۴ یونیکس وجود دارد، تاریخ رسمی ایجاد گرپ چهارم مارس ۱۹۷۳ ذکر شده‌است.

گِرَپ همچنین اسم یک سایت ساز (Grapp.ir) است که به شما امکان می دهد بدون نیاز به دانش برنامه نویسی، وب سایت های زیبا، سریع و بهینه برای موتورهای جستجو بسازید.

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


```bash
grep apple fruitlist.txt
```

تطبیق وقتی رخ می‌دهد که دنباله‌ای از کاراکترها تشخیص داده شوند. برای مثال خطوطی که شامل pineapple و apples هستند بدون در نظر گرفتن مرزی که بین کلمات وجود دارد چاپ می‌شوند. (با فرض اینکه این خطوط در فایل وجود دارند)

با این حال الگویی که در آرگومان مشخص شده به حروف کوچک و بزرگ حساس است. بنابراین در مثال بالا، اگر خطی حاوی کلمه Apple (با حرف A بزرگ) وجود داشته باشد، آن خط تشخیص داده نمی‌شود. مگر اینکه در آن خط‌ها علاوه بر کلمه Apple، کلمه apple هم وجود داشته باشد. می‌توان قابلیت حساس بودن به حروف کوچک و بزرگ را با مشخص کردن گزینه -i در خط فرمان خاموش کرد.

در خط فرمان می‌تواند چندین فایل را برای جستجو مشخص کرد. مثلاً برای جستجو کردن تمام فایل‌هایی که نام آن‌ها به .txt ختم می‌شود، می‌توان از * استفاده کرد:

```bash
grep apple *.txt
```

از عبارات باقاعده می‌توان برای جستجو کردن الگوهای متنی پیشرفته تری استفاده کرد. مثلاً برای پیدا کردن تمام خطوطی که با حرف a شروع می‌شوند و به دنبال آن هر کاراکتر دلخواهی قرار داشته باشد و سپس ple آمده باشد، می‌توان از دستور زیر استفاده کرد.

```bash
grep ^a.ple fruitlist.txt
```

همانطور که گفته شد، قبل از گرپ دستوری در ویرایشگر ed وجود داشت که برای انجام همین کار استفاده می‌شد. قبل از آنکه برنامه مستقل گرپ برای جستجو در فایل‌ها به وجود آید، برای جستجوی یک الگو باید چنین کاری انجام میشد:

```bash
ed fruitlist.txt
 g/^a.ple/p
 q
```

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

مانند بیشتر دستورهای یونیکس، گرپ هم می‌تواند گزینه‌هایی در خط فرمان دریافت کند که این گزینه رفتار گرپ را مشخص می‌کنند. برای مثال گزینه l (حرف L کوچک) باعث می‌شود تا گرپ به جای اینکه خطوط حاوی الگو را چاپ کند، اسم فایلی که خط مورد نظر در آن قرار دارد را چاپ کند.

## منابع

* 

رده:ابزارهای اس یو اس ۲۰۰۸ یونیکس
رده:ابزارهای پردازش متن یونیکس
رده:برنامه‌های استاندارد یونیکس
رده:نرم‌افزارهای پروژه گنو