GREP(1) دستورات کاربر GREP(1) نام (NAME) grep, egrep, fgrep, rgrep - چاپ خطوط منطبق با الگوها خلاصه دستور (SYNOPSIS) grep [گزینه...] الگوها [فایل...] grep [گزینه...] -e الگوها ... [فایل...] grep [گزینه...] -f فایل_الگو ... [فایل...] توضیحات (DESCRIPTION) دستور grep به جستجوی الگوها در هر فایل می‌پردازد. الگوها شامل یک یا چند الگو است که با نویسه خط جدید (newline) از یکدیگر جدا شده‌اند و grep هر خطی را که با یک الگو مطابقت داشته باشد چاپ می‌کند. معمولاً زمانی که از grep در یک دستور شل استفاده می‌شود، الگوها باید داخل علامت نقل‌قول (کوتیشن) قرار گیرند. یک فایل به صورت “-” به معنای ورودی استاندارد (standard input) است. اگر هیچ فایلی داده نشود، در جستجوهای بازگشتی دایرکتوری جاری بررسی می‌شود و در جستجوهای غیربازگشتی ورودی استاندارد خوانده خواهد شد. برنامه‌های مشتق‌شدهٔ egrep، fgrep و rgrep نیز در دسترس هستند. این برنامه‌ها به ترتیب معادل grep -E، grep -F و grep -r هستند. این موارد قدیمی (deprecated) شده‌اند، اما برای سازگاری رو به عقب نگه‌داری می‌شوند. به دلایل سازگاری و قابلیت حمل، توصیه می‌شود از این برنامه‌های قدیمی پرهیز کرده و در عوض از grep همراه با گزینه مرتبط با آن استفاده کنید. گزینه‌ها (OPTIONS) اطلاعات عمومی برنامه (Generic Program Information) --help نمایش پیام راهنما و خروج از برنامه. -V, --version نمایش شماره نسخه grep و خروج از برنامه. نحو الگو (Pattern Syntax) -E, --extended-regexp تفسیر الگوها به عنوان عبارت‌های منظم گسترده (EREs). -F, --fixed-strings تفسیر الگوها به عنوان رشته‌های ثابت و مشخص، نه عبارت‌های منظم. -G, --basic-regexp تفسیر الگوها به عنوان عبارت‌های منظم پایه (BREs). این حالت پیش‌فرض است. -P, --perl-regexp تفسیر الگوها به عنوان عبارت‌های منظم سازگار با پرل (PCREs). این گزینه هنگام ترکیب با گزینه -z (--null-data) آزمایشی است و ممکن است grep -P در مورد ویژگی‌های پیاده‌سازی نشده هشدار دهد. کنترل تطابق (Matching Control) -e الگوها, --regexp=الگوها استفاده از الگوها به عنوان الگوهای جستجو. اگر از این گزینه چند بار استفاده شود یا با گزینه -f (--file) ترکیب شود، تمامی الگوهای داده‌شده جستجو می‌شوند. این گزینه می‌تواند برای محافظت از الگویی که با “-” شروع می‌شود استفاده شود. -f فایل, --file=فایل دریافت الگوها از فایل، یک الگو در هر خط. اگر از این گزینه چند بار استفاده شود یا با گزینه -e (--regexp) ترکیب شود، تمام الگوهای مشخص‌شده جستجو می‌شوند. فایل خالی شامل صفر الگو است و بنابراین با چیزی مطابقت پیدا نمی‌کند. اگر فایل برابر با - باشد، الگوها از ورودی استاندارد خوانده می‌شوند. -i, --ignore-case نادیده گرفتن تمایز حروف بزرگ و کوچک در الگوها و داده‌های ورودی، به طوری که حروفی که فقط در بزرگی و کوچکی متفاوتند با هم مطابقت داشته باشند. --no-ignore-case عدم چشم‌پوشی از تمایز حروف بزرگ و کوچک در الگوها و داده‌های ورودی. این حالت پیش‌فرض است. این گزینه برای اسکریپت‌های شلی که قبلاً از -i استفاده کرده‌اند مفید است تا اثر آن را خنثی کند. -v, --invert-match معکوس کردن نتیجه انطباق، جهت انتخاب و نمایش خطوطی که مطابقت ندارند. -w, --word-regexp فقط انتخاب خطوطی که بخش‌های منطبق در آن‌ها کلمات کامل را تشکیل می‌دهند. کلمه به معنای دنباله‌ای از حروف، ارقام و زیرخط (_) است. این گزینه در صورت تعیین -x بی‌اثر خواهد بود. -x, --line-regexp فقط انتخاب خطوطی که به طور دقیق و کامل با کل خط مطابقت دارند. کنترل خروجی عمومی (General Output Control) -c, --count جلوگیری از خروجی عادی؛ به جای آن تعداد خطوط منطبق برای هر فایل ورودی چاپ می‌شود. با گزینه -v, --invert-match تعداد خطوط نامنطبق شمارش می‌شود. --color[=زمان], --colour[=زمان] احاطه کردن رشته‌های منطبق، خطوط منطبق، نام فایل‌ها، شماره خطوط و جداکننده‌ها با توالی‌های فرار رنگی برای نمایش در ترمینال. رنگ‌ها توسط متغیر محیطی GREP_COLORS تعریف می‌شوند. مقدار زمان می‌تواند never، always یا auto باشد. -L, --files-without-match جلوگیری از چاپ خروجی استاندارد؛ به جای آن فقط نام فایل‌هایی که هیچ تطابقی در آن‌ها پیدا نشده چاپ می‌شود. -l, --files-with-matches جلوگیری از چاپ خروجی معمول؛ به جای آن فقط نام فایل‌هایی که تطابق دارند چاپ می‌شود. پویش هر فایل به محض یافتن اولین تطابق متوقف می‌شود. -m تعداد, --max-count=تعداد توقف خواندن فایل پس از یافتن تعداد خط منطبق. اگر تعداد برابر ۰ باشد، بلافاصله متوقف می‌شود. مقدار ۱- به منزله بی‌نهایت است که حالت پیش‌فرض می‌باشد. -o, --only-matching چاپ کردن تنها بخش‌های منطبق (غیر خالی) از یک خط منطبق، که هر کدام در یک خط خروجی مجزا نمایش داده می‌شوند. -q, --quiet, --silent حالت ساکت؛ هیچ متنی در خروجی استاندارد نوشته نمی‌شود. به محض یافتن اولین تطابق، بلافاصله با وضعیت خروج صفر (موفق) خارج می‌شود، حتی اگر خطایی رخ داده باشد. همچنین گزینه -s را مشاهده کنید. -s, --no-messages نادیده گرفتن پیام‌های خطا درباره فایل‌های ناموجود یا غیرقابل خواندن. کنترل پیشوند خطوط خروجی (Output Line Prefix Control) -b, --byte-offset چاپ افست بایتی (مبتنی بر صفر) در فایل ورودی قبل از هر خط خروجی. -H, --with-filename چاپ نام فایل برای هر تطابق. این حالت زمانی که بیش از یک فایل برای جستجو مشخص شده باشد، پیش‌فرض است. -h, --no-filename جلوگیری از درج پیشوند نام فایل در خروجی. زمانی که فقط یک فایل (یا فقط ورودی استاندارد) وجود دارد، پیش‌فرض است. --label=برچسب نمایش ورودی استاندارد با نام برچسب. برای مثال: gzip -cd foo.gz | grep --label=foo -H 'some pattern'. -n, --line-number درج شماره خط (مبتنی بر یک) در ابتدای هر خط خروجی. -T, --initial-tab اطمینان از تراز بودن اولین نویسه محتوای خط با یک Tab جهت خوانایی بهتر پیشوندها. -Z, --null چاپ بایت صفر (نویسه ASCII NUL) به جای نویسه بعد از نام فایل (به جای newline). برای استفاده همراه با xargs -0 بسیار کارآمد است. کنترل خطوط پیرامونی (Context Line Control) -A تعداد, --after-context=تعداد چاپ تعداد خط بعد از خطوط منطبق. بین گروه‌های مجزا یک خط با جداکننده (--) قرار می‌گیرد. -B تعداد, --before-context=تعداد چاپ تعداد خط قبل از خطوط منطبق. -C تعداد, -تعداد, --context=تعداد چاپ تعداد خط از بافت متن پیرامونی (قبل و بعد از خط منطبق). --group-separator=جداکننده هنگام استفاده از -A، -B یا -C، چاپ جداکننده به جای -- بین گروه‌ها. --no-group-separator عدم چاپ جداکننده بین گروه‌های خطوط مجاور. انتخاب فایل و دایرکتوری (File and Directory Selection) -a, --text پردازش فایل دودویی (باینری) همانند فایل متنی؛ معادل با --binary-files=text. --binary-files=نوع اگر داده‌های فایل نشان دهند که فایل باینری است، فرض می‌شود فایل از نوع نوع است. به طور پیش‌فرض مقدار نوع برابر با binary است که grep خروجی را پس از شناسایی داده‌های باینری سرکوب کرده و پیامی مبنی بر تطابق فایل باینری نمایش می‌دهد. اگر without-match باشد، فایل نادیده گرفته می‌شود (معادل -I). اگر text باشد، مانند فایل متنی پردازش می‌شود. -D اقدام, --devices=اقدام اگر فایل ورودی یک دستگاه (device)، FIFO یا سوکت باشد، از اقدام مشخص‌شده استفاده می‌شود: read (پیش‌فرض، خواندن مانند فایل عادی) یا skip (نادیده گرفتن بی‌صدا). -d اقدام, --directories=اقدام نحوه برخورد با دایرکتوری‌ها: read (پیش‌فرض)، skip (رد شدن) یا recurse (خواندن بازگشتی تمام محتویات دایرکتوری؛ معادل -r). --exclude=الگو نادیده گرفتن فایل‌هایی که پسوند نام آن‌ها با الگوی wildcard الگو مطابقت دارد. --exclude-from=فایل نادیده گرفتن فایل‌هایی که با الگوهای خوانده‌شده از فایل مطابقت دارند. --exclude-dir=الگو نادیده گرفتن دایرکتوری‌هایی که نام آن‌ها با الگو تطابق دارد. -I پردازش فایل باینری به گونه‌ای که انگار هیچ دادهٔ منطبقی ندارد؛ معادل با --binary-files=without-match. --include=الگو جستجو تنها در فایل‌هایی که نام پایه آن‌ها با الگو مطابقت دارد. -r, --recursive خواندن بازگشتی تمام فایل‌های زیر هر دایرکتوری. فقط در صورتی که پیوندهای نمادین در خط فرمان مشخص شده باشند دنبال می‌شوند. -R, --dereference-recursive خواندن بازگشتی تمام فایل‌های زیر هر دایرکتوری و دنبال کردن تمامی پیوندهای نمادین (برخلاف -r). سایر گزینه‌ها (Other Options) --line-buffered استفاده از بافر خطی در خروجی (ممکن است روی کارایی اثرگذار باشد). -U, --binary رفتار با فایل‌ها به عنوان باینری (مخصوص پلتفرم‌های MS-DOS و MS- Windows جهت مدیریت خطوط CR/LF). -z, --null-data در نظر گرفتن داده‌های ورودی و خروجی به عنوان خطوطی که با بایت صفر (ASCII NUL) خاتمه می‌ابند به جای خط جدید. عبارت‌های منظم (REGULAR EXPRESSIONS) یک عبارت منظم، الگویی است که مجموعه‌ای از رشته‌ها را توصیف می‌کند. عبارت‌های منظم به روشی مشابه عبارت‌های حسابی ساخته می‌شوند، یعنی با استفاده از عملگرهای مختلف برای ترکیب عبارت‌های کوچک‌تر. دستور grep سه نوع مختلف از نحو عبارت‌های منظم را پشتیبانی می‌کند: عبارت‌های منظم پایه (BRE)، عبارت‌های منظم گسترده (ERE) و عبارت‌های سازگار با پرل (PCRE). در گنو grep ، نسخه‌های پایه و گسترده تنها نشانه‌گذاری‌های متفاوتی برای قابلیت‌های یکسان تطابق الگو هستند. اجزای سازنده اصلی، عبارت‌های منظمی هستند که با یک نویسه منفرد تطابق دارند. اکثر نویسه‌ها، از جمله تمام حروف و اعداد، با خودشان تطابق پیدا می‌کنند. هر نویسه خاص (متاکاراکتر) با قرار گرفتن یک بک‌اسلش (\) قبل از آن، معنی تحت‌اللفظی پیدا می‌کند. نویسه نقطه (.) با هر نویسهٔ واحدی تطابق می‌یابد. دسته‌های نویسه و عبارت‌های قلاب (Character Classes) یک عبارت قلاب لیستی از نویسه‌ها است که درون [ و ] قرار می‌گیرد و با هر نویسه منفرد در آن لیست تطابق دارد. اگر اولین نویسه ^ باشد، با هر نویسه‌ای که در لیست نباشد مطابقت می‌یابد. به عنوان مثال، [0123456789] با هر رقم منفردی مطابقت دارد. یک عبارت بازه شامل دو نویسه است که با یک خط تیره جدا شده‌اند (مانند [a-z]). همچنین دسته‌های نویسه‌ای از پیش تعریف‌شده مانند [:alnum:]، [:alpha:]، [:digit:]، [:lower:]، [:upper:] و [:space:] در دسترس هستند. مهارها (Anchoring) علامت توان/هشتک (^) و علامت دلار ($) به ترتیب با رشته خالی در ابتدای خط و انتهای خط مطابقت دارند. تکرارها (Repetition) ? مورد قبلی اختیاری است و حداکثر یک بار مطابقت می‌یابد. * مورد قبلی صفر یا چند بار مطابقت می‌یابد. + مورد قبلی یک یا چند بار مطابقت می‌یابد. {n} مورد قبلی دقیقاً n بار مطابقت می‌یابد. {n,} مورد قبلی n بار یا بیشتر مطابقت می‌یابد. {,m} مورد قبلی حداکثر m بار مطابقت می‌یابد (افزونه گنو). {n,m} مورد قبلی حداقل n بار و حداکثر m بار مطابقت می‌یابد. الحاق و جایگزینی (Concatenation and Alternation) دو عبارت منظم می‌توانند به هم متصل شوند. همچنین عملگر | برای انتخاب بین دو عبارت جایگزین استفاده می‌شود. ارجاع به عقب و زیرعبارت‌ها (Back-references) ارجاع به عقب \n که در آن n یک رقم منفرد است، با زیررشته‌ای که قبلاً توسط زیرعبارت درون پرانتز تطبیق داده شده مطابقت می‌یابد. وضعیت خروج (EXIT STATUS) به طور معمول، اگر خطی انتخاب و منطبق شود وضعیت خروج ۰ است، اگر هیچ خطی منطبق نشود ۱ است و در صورت بروز خطا ۲ خواهد بود. با این حال، در صورت استفاده از گزینه -q، در صورت یافتن هر تطابقی خروجی ۰ خواهد بود. متغیرهای محیطی (ENVIRONMENT) GREP_COLORS رنگ‌ها و سایر ویژگی‌های بصری مورد استفاده برای برجسته‌سازی بخش‌های خروجی را پیکربندی می‌کند. LC_ALL, LC_COLLATE, LANG ترتیب مرتب‌سازی و بازه‌های حروف را تعیین می‌کند. LC_ALL, LC_CTYPE, LANG نوع نویسه‌ها و کدگذاری متن (مانند UTF-8 یا ASCII) را مشخص می‌کند. LC_ALL, LC_MESSAGES, LANG زبان پیام‌های خروجی برنامه را تعیین می‌کند. POSIXLY_CORRECT در صورت تنظیم، grep دقیقاً طبق استاندارد POSIX رفتار خواهد کرد. نکات (NOTES) این صفحه راهنما به طور متناوب نگهداری می‌شود؛ مستندات کامل معمولاً به‌روزتر هستند. حق نشر (COPYRIGHT) حق نشر 1998-2000, 2002, 2005-2023 بنیاد نرم‌افزارهای آزاد (Free Software Foundation, Inc.) این یک نرم‌افزار آزاد است؛ برای شرایط کپی‌برداری به سورس‌کد مراجعه فرمایید. هیچ ضمانتی وجود ندارد؛ حتی برای قابلیت فروش یا تناسب با یک هدف خاص. گزارش باگ‌ها (BUGS) گزارش‌های باگ را به نشانی ارسال نمایید. مثال‌ها (EXAMPLE) مثال زیر محل و محتوای هر خطی که شامل “f” بوده و به “.c” ختم می‌شود را در میان تمام فایل‌های دایرکتوری جاری که نامشان شامل “g” بوده و به “.h” ختم می‌شود نمایش می‌دهد: $ grep -n -- 'f.*\.c$' *g*.h /dev/null همچنین ببینید (SEE ALSO) awk(1), cmp(1), diff(1), find(1), perl(1), sed(1), sort(1), xargs(1), read(2), pcre2(3), regex(7) GNU grep 3.11 2026-09-07 GREP(1)