نحوه استفاده از دستور grep در لینوکس #
مقدمه #
این grepدستور در لینوکس یک ابزار مرتبسازی است که برای جستجوی الگوهای متنی در فایلها استفاده میشود. همچنین به عنوان عبارت منظم جهانی print( grep) شناخته میشود و به طور فعال الگوها را در انواع فایلهای خروجی مانند پیکربندیها، متن یا کد برنامه مطابقت میدهد.
این مقاله نحوه استفاده از grepدستور در لینوکس برای جستجو و دستکاری متن در فایلها را توضیح میدهد.
grepسینتکس دستور #
در زیر سینتکس دستور آمده است grep:
$ grep [options] pattern [file...]در دستور بالا، patternمتن هدف یا عبارت منظمی که باید جستجو شود چیست؟ در حالی که [file...]یک یا چند فایل را برای جستجو مشخص میکند.
grepگزینههای فرمان #
| گزینه | توضیحات |
|---|---|
-i | تمایز حروف کوچک و بزرگ را در الگو نادیده بگیرید. |
-v | تطبیق را معکوس میکند و خطوطی را نمایش میدهد که با یک الگو مطابقت ندارند. |
-c | تعداد خطوط منطبق را بشمارید. |
-l | نام فایلها را با خطوط منطبق فهرست کنید. |
-n | نمایش شماره خطوط با خطوط منطبق. |
-r | جستجوی بازگشتی در دایرکتوریها. |
-w | فقط کلمات کامل را مطابقت دهید. |
-x | فقط کل خطوط را مطابقت دهید. |
-A | نمایش N خط متن پس از تطبیق. |
-B | نمایش N خط متن قبل از تطبیق. |
-C | N خط متن پیرامون تطابق نمایش بده. |
مثالهای عملی از grepفرمان #
- یک جستجوی اولیه انجام دهید.کنسول
$ grep "NegarNovin" file.txt
دستور بالا رشته
negarnovinمورد نظر را جستجو میکندfile.txtو تمام نتایج منطبق در فایل را نمایش میدهد.خروجی:

- حساسیت به حروف کوچک و بزرگ را نادیده بگیرید.کنسول
$ grep -i "NegarNovin" file.txt
دستور بالا متن را جستجو میکند
negarnovinو تمام نتایجی را که با هر موردی مطابقت دارند نمایش میدهد. برای مثال، متنی مانندnegarnovin،negarnovin، وnegarnovinبا جستجو مطابقت دارد.خروجی:

- تطبیق را معکوس میکند و تمام خطوطی را که شامل یک رشته خاص نیستند، نمایش میدهد.کنسول
$ grep -v "negarnovin" file.txt
دستور بالا تمام خطوطی را که شامل رشته نیستند، نمایش میدهد
negarnovin.خروجی:

- خطوطی را بشمارید که الگوی یکسانی دارند.کنسول
$ grep -c "negarnovin" file.txt
دستور بالا تعداد خطوطی که شامل متن هستند را میشمارد
negarnovin.خروجی:

- فهرست کردن فایلهای مدیر که با ترتیب نام فایل خاصی مطابقت دارند.کنسول
$ grep -l "Hello" *.txt
دستور بالا تمام فایلهای موجود در دایرکتوری کاری که شامل رشته هستند را فهرست میکند
Hello.خروجی:

- نمایش شماره خطوط.کنسول
$ grep -n "NegarNovin" file.txt
دستور بالا تمام خطوطی را که با رشته
negarnovinو شماره خط مربوطه مطابقت دارند، نمایش میدهد.خروجی:

- یک جستجوی بازگشتی انجام دهید.کنسول
$ grep -r "Hello" /path/to/directory
دستور بالا رشته مورد نظر را
Helloدر تمام فایلهای درون یک دایرکتوری خاص و تمام زیر دایرکتوریها جستجو میکند.خروجی:

- کلمات کامل را با هم تطبیق دهید.کنسول
$ grep -w "negarnovin" file.txt
دستور بالا رشته را
negarnovinبه صورت یک کلمه کامل در فایل جستجو میکندfile.txt.خروجی:

استفاده از عبارات منظم باgrep #
این grepدستور از عبارات منظم (Regex) پشتیبانی میکند که مجموعهای از رشتهها را برای جستجو با روشهای تطبیق الگوی پیشرفته توصیف میکنند.
- جستجوی یک رشته در ابتدای یک خطکنسول
$ grep "^negarnovin" file.txt
دستور بالا تمام خطوطی را که با رشته شروع میشوند، مطابقت داده و نمایش میدهد
negarnovin.خروجی:

- جستجوی یک رشته در انتهای یک خطکنسول
$ grep "rates.$" file.txt
دستور بالا خطوطی را که به رشته ختم میشوند، تطبیق داده و نمایش میدهد
rates..خروجی:

- خطوطی را جستجو کنید که شامل طیف وسیعی از اعداد بین
۰و باشند۹.کنسول$ grep "[۰-۹]" file.txt
دستور فوق خطوطی را که شامل هر عددی در محدوده مشخص شده هستند، مطابقت داده و نمایش میدهد.
خروجی:

سناریوهای پیشرفته استفاده #
- جستجوی الگوهای چندگانه.کنسول
$ grep -e "Agrawal" -e "Aggrawal" file.txt
دستور بالا تمام خطوطی را که شامل یکی از این دو
Agrawalیا هستند ، جستجو میکندAggrawal.خروجی:

grepبرای فیلتر کردن نتایج، با دستورات دیگر ترکیب کنید .کنسول$ ps aux | grep "process_name"
دستور فوق تمام فرآیندها را جستجو میکند و از آن
grepبرای فیلتر کردن تمام فرآیندهای در حال اجرا با رشته استفاده میکندprocess_name.خروجی:

grepبا استفاده کنیدfind.کنسول$ find /path/to/directory -type f -exec grep "example" {} +
دستور بالا رشته مورد نظر را
exampleدرfindخروجی دستور جستجو میکند.خروجی:

- نمایش خطوط به همراه متن.کنسول
$ grep -C ۳ "negarnovin" file.txt
دستور بالا سه خط متن را در هر خط منطبق نمایش میدهد.
خروجی:

- جستجوی فایلهای فشردهکنسول
$ zgrep "pattern" file.gz
دستور بالا رشته مورد نظر را
patternدر فایل فشرده جستجو میکندfile.gz.خروجی:

- فایلهای خاص را از جستجو مستثنی کنید.کنسول
$ grep --exclude="*.log" -r "pattern" /path/to/directory
دستور بالا به صورت بازگشتی
patternفایلهایی با.logپسوند را جستجو میکند اما آنها را حذف میکند.خروجی:

نتیجه گیری #
grepشما از این دستور برای جستجوی کارآمد و دستکاری دادههای متنی در فایلها و دایرکتوریها استفاده کردهاید . برای گزینههای بیشتر دستور، به صفحه راهنما man grepمراجعه کنید grep.
















