📄 محتوای کامل
مقدمه
این 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و تمام نتایج منطبق در فایل را نمایش میدهد.خروجی: - حساسیت به حروف کوچک و بزرگ را نادیده بگیرید. consoleCopy
$ grep -i "Negarnovin" file.txt
- دستور بالا متن را جستجو میکند
Negarnovinو تمام نتایجی را که با هر موردی مطابقت دارند نمایش میدهد. برای مثال، متنی مانندNegarnovin،NegarNovin، وNEGARNOVINبا جستجو مطابقت دارد.خروجی: - تطبیق را معکوس میکند و تمام خطوطی را که شامل یک رشته خاص نیستند، نمایش میدهد. consoleCopy
$ grep -v "Negarnovin" file.txt
- دستور بالا تمام خطوطی را که شامل رشته نیستند، نمایش میدهد
Negarnovin.خروجی: - خطوطی را بشمارید که الگوی یکسانی دارند. consoleCopy
$ grep -c "Negarnovin" file.txt
- دستور بالا تعداد خطوطی که شامل متن هستند را میشمارد
negarnovin.خروجی: - فهرست کردن فایلهای مدیر که با ترتیب نام فایل خاصی مطابقت دارند. consoleCopy
$ grep -l "Hello" *.txt
- دستور بالا تمام فایلهای موجود در دایرکتوری کاری که شامل رشته هستند را فهرست میکند
Hello.خروجی: - نمایش شماره خطوط. consoleCopy
$ grep -n "Negarnovin" file.txt
- دستور بالا تمام خطوطی را که با رشته
Negarnovinو شماره خط مربوطه مطابقت دارند، نمایش میدهد.خروجی: - یک جستجوی بازگشتی انجام دهید. consoleCopy
$ grep -r "Hello" /path/to/directory
- دستور بالا رشته مورد نظر را
Helloدر تمام فایلهای درون یک دایرکتوری خاص و تمام زیر دایرکتوریها جستجو میکند.خروجی: - کلمات کامل را با هم تطبیق دهید. consoleCopy
$ grep -w "Negarnovin" file.txt
- دستور بالا رشته را
Negarnovinبه صورت یک کلمه کامل در فایل جستجو میکندfile.txt.خروجی:
استفاده از عبارات منظم باgrep
این grepدستور از عبارات منظم (Regex) پشتیبانی میکند که مجموعهای از رشتهها را برای جستجو با روشهای تطبیق الگوی پیشرفته توصیف میکنند.
- جستجوی یک رشته در ابتدای یک خط consoleCopy
$ grep "^Negarnovin" file.txt
- دستور بالا تمام خطوطی را که با رشته شروع میشوند، مطابقت داده و نمایش میدهد
Negarnovin.خروجی: - جستجوی یک رشته در انتهای یک خط consoleCopy
$ grep "rates.$" file.txt
- دستور بالا خطوطی را که به رشته ختم میشوند، تطبیق داده و نمایش میدهد
rates..خروجی:دستور grep در لینوکس - خطوطی را جستجو کنید که شامل طیف وسیعی از اعداد بین
0و باشند9. consoleCopy$ grep "[0-9]" file.txt
- دستور فوق خطوطی را که شامل هر عددی در محدوده مشخص شده هستند، مطابقت داده و نمایش میدهد.خروجی:
سناریوهای پیشرفته استفاده
- جستجوی الگوهای چندگانه. consoleCopy
$ grep -e "Agrawal" -e "Aggrawal" file.txt
- دستور بالا تمام خطوطی را که شامل یکی از این دو
Agrawalیا هستند ، جستجو میکندAggrawal.خروجی: grepبرای فیلتر کردن نتایج، با دستورات دیگر ترکیب کنید .
$ ps aux | grep "process_name"
- دستور فوق تمام فرآیندها را جستجو میکند و از آن
grepبرای فیلتر کردن تمام فرآیندهای در حال اجرا با رشته استفاده میکندprocess_name.خروجی: grepبا استفاده کنیدfind. consoleCopy$ find /path/to/directory -type f -exec grep "example" {} +- دستور بالا رشته مورد نظر را
exampleدرfindخروجی دستور جستجو میکند.خروجی: - نمایش خطوط به همراه متن. consoleCopy
$ grep -C 3 "Negarnovin" file.txt
- دستور بالا سه خط متن را در هر خط منطبق نمایش میدهد.خروجی:
- جستجوی فایلهای فشرده consoleCopy
$ zgrep "pattern" file.gz
- دستور بالا رشته مورد نظر را
patternدر فایل فشرده جستجو میکندfile.gz.خروجی: - فایلهای خاص را از جستجو مستثنی کنید. consoleCopy
$ grep --exclude="*.log" -r "pattern" /path/to/directory
- دستور بالا به صورت بازگشتی
patternفایلهایی با.logپسوند را جستجو میکند اما آنها را حذف میکند.خروجی:
نتیجه گیری
grepشما از این دستور برای جستجوی کارآمد و دستکاری دادههای متنی در فایلها و دایرکتوریها استفاده کردهاید . برای گزینههای بیشتر دستور، به صفحه راهنما man grepمراجعه کنید grep.