دستور grep در لینوکس برای پیدا کردن الگو و یا کلمهای درون متن استفاده میشود. در این مقاله نحوه نصب و استفاده از این دستور را به همراه مثال ارائه میدهیم.
دستور grep
در مقاله “جستجوی فایلها در لینوکس” توضیحاتی در خصوص اهمیت جستجوی فایلها و همچنین نحوه جستجوی فایل در لینوکس به ویژه با دستور “Find” ارائه داده شد.
در این مقاله میخواهیم با دستور grep آشنا شویم.
grep چیست؟
دستور grep به منظور جستجو در سیستمعاملهای مبتنی بر لینوکس استفاده میشود. در واقع اگر بخواهید یک الگو یا کلمه خاصی را درون یک متن پیدا کنید، به سادگی با استفاده از این دستور، موفق به یافتن آن خواهید شد.
نصب grep
اگر قصد استفاده از این ابزار را دارید، ابتدا آن را روی سیستم خود نصب کنید.
برای نصب این ابزار دستور زیر را اجرا نمایید:
نصب در Debian/Ubuntu
|
1 |
sudo apt-get install grep |
نصب در RHEL/CentOS/Fedora
|
1 |
sudo yum install grep |
با اجرای این دستورات، ابزار grep روی سیستم شما نصب شده و از این پس میتوانید از آن استفاده نمایید.
نحوه استفاده
شیوه استفاده از این دستور در لینوکس را به صورت مثالهای کاربردی بیان میکنیم.

1) جستجوی فایلها
اگر قصد دارید فایلی در سیستم خود را با نام مشخص بیابید، کافی است دستور زیر را اجرا نمایید:
|
1 |
dpkg -l | grep -i نام فایل |
در دستور ذکر شده به جای «نام فایل» اسم فایلی که در جستجوی آن هستید را بنویسید. عبارت «i-» در دستور برای عدم حساسیت به حروف بزرگ و کوچک میباشد. اگر قصد دارید جستجوی دقیقتر انجام دهید میتوانید آن را ننویسید.
برای نمونه اگر قصد یافتن فایلی به نام python را دارید دستور زیر را اجرا کنید.
|
1 |
dpkg -l | grep -i python |
2) فیلتر کردن نتایج جستجو
ممکن است بخواهید محتوای فایلی را به ازای عبارتی فیلتر کرده و فقط قسمتی از آن را مشاهده نمایید. برای این منظور باید دستور زیر را اجرا کنید:
|
1 |
grep –v “کاراکتری که میخواهید فیلتر شود” |
برای مثال قصد دارید کدهای تاثیرگذار یک فایل را مشاهده نمایید. تمام خطوطی از یک فایل را که به صورت کامند هستند و تاثیری در اجرای فایل ندارد فیلتر میکنید تا این کار به سادگی انجام شود. با اجرای دستور زیر شما موفق به این کار خواهید شد.
|
1 |
grep –v “#” آدرس فایل |
مثلا اگر فایل etc/apache2/sites-available/default-ssl/ هدف شما باشد باید اینگونه وارد کنید:
|
1 |
grep –v “#” /etc/apache2/sites-available/default-ssl |
3) پیدا کردن فایلهای با فرمت خاص
با استفاده از این دستور و همچنین دستور Find شما میتوانید فایلها را به ازای فرمتهای ذخیره شده جستجو و فیلتر نمایید. دستور زیر این کار را برای شما انجام میدهد:
|
1 |
find . –name “*.فرمت دلخواه” | grep –i نام دلخواه |
به عنوان نمونه فرض کنید شما میخواهید تمام فایلهایی به اسم gitiserver را به فرمت mp3 بیابید. دستور زیر برای این منظور است:
|
1 |
find . –name “*.mp3” | grep –i gitiserver |
همچنین اگر بخواهید در جستجوی شما فایلهایی به ازای نام خاصی نشان داده نشوند از دستور «vi-» استفاده کنید. مثلا در جستجوی بالا اگر بخواهید فایلهایی که عبارت host را در نام خود دارند نمایش داده نشوند مطابق دستور زیر عمل نمایید.
|
1 |
find . –name “*.mp3” | grep –i gitiserver | grep –vi “host” |
4) نمایش قبل و بعد عبارت جستجو شده
با استفاده از عبارتهای «B-» و «A-» میتوانید چند خط قبل و بعد یک عبارتی که جستجو میکنید را مشاهده نمایید. مثلا اگر در فایل ifconfig بخواهید 4 خط بعد از eth0 را مشاهده نمایید دستور زیر را اجرا کنید:
|
1 |
ifconfig | grep –A 4 eth0 |
همچنین اگر میخواهید 2 خط قبل از عبارت UP را ببینید دستور زیر را بزنید:
|
1 |
ifconfig | grep -B 2 UP |
5) مشاهده تعداد مشخص از نتایج جستجو
ممکن است شما فقط بخواهید تعداد مشخصی از نتایج جستجو را مشاهده کنید. دستور زیر (برای جستجو در فایل ifconfig) چاره این کار است:
|
1 |
ifconfig | grep –C تعداد مورد نظر lo |
مثلا برای مشاهده تنها 2 عدد از نتایج جستجو دستور زیر را باید اجرا کنید:
|
1 |
ifconfig | grep –C 2 lo |
6) یافتن تعداد نتایج جستجو
اگر بخواهید تنها تعداد نتایج حاصل از جستجو را بیابید باید از «c-» استفاده نمایید. برای مثال اگر تعداد نتایج جستجو در فایل ifconfig به ازای عبارت مشخص را بخواهید دستور زیر را باید وارد کنید:
|
1 |
ifconfig | grep –c inet6 |
7)جستجوی یک رشته داخل فایل
اگر عبارتی از محتویات داخل فایل را بخواهید جستجو کنید میتوانید با grep این کار را انجام دهید. مثلا در جستجوی عبارتی که در کامپایل برنامه شما را دچار مشکل کرده است با استفاده از grep به این شکل میتواند شماره خط مربوط به خطای آن را به شما نمایش دهد؛ مانند دستور زیر که در فایل setup.py عبارت main را جستجو میکند:
|
1 |
grep –n “main” setup.py |
8) جستجو در تمام دایرکتوریها
برای جستجوی یک رشته در تمام دایرکتوریهای سیستم از دستور زیر استفاده کنید.
|
1 |
grep –r “function” * |
این دستور رشته «function» را در تمام دایرکتوریهای شما جستجو میکند.
9) جستجو براساس الگوی خاص
با عبارت «w-» شما میتوانید جستجو را بر طبق الگوی خاص انجام دهید:
|
1 |
ifconfig | grep –w “RUNNING” |
با این دستور خط حاوی الگوی «RUNNING» برای شما نمایش داده میشود.
10) جستجوی رشته دلخواه در فایل فشرده
برای جستجو در فایلهای فشرده هم میتوانید به شیوه زیر از این دستور استفاده نمایید.
|
1 |
zgrep –i error /var/log/syslog.2.gz |
دستور فوق عبارت error را در فایل فشرده /var/log/syslog.2.gz جستجو میکند.
11) نمایش شماره خطهایی که عبارت خاصی دارند
|
1 |
grep -nr b |
سخن پایانی
از ابزار grep به شیوههای مختلف و با اهداف متفاوت استفاده میشود. در این مقاله ما چند نمونه پرکاربردترین آنها را برای شما بیان کردیم.
با این دستورات میتوانید فایلهای مورد نظر خود را در سریعترین زمان بیابید.
به همین سادگی!!
سلام. چجوری میتونیم با دستور grep شماره خط هایی که متن خاصی را دارند نشان داد؟
سلام
فقط کافیه که عبارت n- هم اضافه کنید. برای مثال:
grep -nr b