وبلاگ رسانگار
با ما حرفه ای باشید

سرور مجازی NVMe

دستور egrep لینوکس با مثال

0 5
زمان لازم برای مطالعه: 7 دقیقه


دستور egrep متعلق به خانواده دستور grep است که برای جستجوی الگو در لینوکس استفاده می شود. اگر از دستور grep استفاده کرده اید، egrep مانند grep -E (grep Extended regex’) عمل می کند. Egrep یک فایل خاص را از خط به خط اسکن می کند و خط(هایی) را که شامل رشته جستجو/عبارت معمولی هستند چاپ می کند. در این مقاله 15 نمونه مفید از دستورات egrep را توضیح خواهیم داد که به افراد تازه کار و حتی متخصصان کمک می کند تا جستجوهای معنی دار در لینوکس را انجام دهند. این مثال ها را انجام داده ایم. روی یک سیستم Debian 10 Buster اما می توان آنها را به راحتی تکرار کرد روی اکثر توزیع های لینوکس

مثال 1: جستجوی یک رشته خاص در یک فایل

این رایج ترین استفاده از دستور egrep است. کاری که شما انجام می‌دهید این است که رشته‌ای را که می‌خواهید جستجو کنید و نام فایلی را که می‌خواهید آن رشته را جستجو کنید، مشخص می‌کنید. سپس نتیجه، کل خط حاوی رشته جستجو شده را نشان می‌دهد.

نحو:

$ egrep نام فایل “search_string”.

مثال:

$ egrep debian samplefile.txt

در این مثال، من کلمه “debian” را در فایل متنی مشخص شده جستجو کردم. می توانید ببینید که چگونه نتایج کل خط حاوی کلمه “debian” را نشان می دهد:

دستور egrep لینوکس با مثال

مثال 2: جستجوی یک رشته خاص در چندین فایل

با دستور egrep، می توانید یک رشته را در میان چندین فایل موجود در یک فهرست جستجو کنید. شما فقط باید در ارائه یک “الگو” برای فایل های جستجو شده کمی دقیق تر باشید. با مثالی که ارائه خواهیم داد این موضوع بیشتر روشن خواهد شد.

نحو:

$ egrep “رشته_جستجو” filename_pattern

مثال:

در اینجا، کلمه “debian” را در تمامی فایل های txt. با تعیین الگوی نام فایل به صورت زیر جستجو می کنیم:

$ egrep “دبیان” *txt

دستور egrep لینوکس با مثالدستور egrep لینوکس با مثال

این دستور تمام خطوط را به همراه نام فایل‌هایی که حاوی کلمه “debian” هستند از تمام فایل‌های txt در فهرست فعلی چاپ کرده است.

مثال 3: جستجوی بازگشتی رشته در کل دایرکتوری

هنگامی که می خواهید یک رشته را در تمام فایل های یک دایرکتوری و زیر شاخه های آن جستجو کنید، می توانید این کار را با استفاده از پرچم -r با دستور egrep انجام دهید.

نحو:

$ egrep -r “رشته_جستجو” *

مثال:

در این مثال، من در حال جستجوی کلمه “نمونه” در فایل های کل دایرکتوری فعلی (دانلودها) هستم.

$ egrep -r “نمونه” *

دستور egrep لینوکس با مثالدستور egrep لینوکس با مثال

نتایج شامل تمام خطوط به همراه نام فایل‌ها است که حاوی کلمه «نمونه» از همه فایل‌های فهرست دانلودها و زیر شاخه‌های آن است.

مثال 4: انجام جستجوی غیر حساس به حروف بزرگ و کوچک

با پرچم -i می توانید از دستور egrep استفاده کنید print بر اساس نتایج روی یک رشته جستجو بدون نیاز به نگرانی در مورد مورد آن.

نحو:

$ egrep -من نام فایل “search_string”.

مثال:

در اینجا، من کلمه “debian” را جستجو می‌کنم و می‌خواهم که نتایج تمام خطوط فایل حاوی کلمه “debian” یا “Debian، صرف نظر از نوع آن، نمایش داده شود.

$ egrep -من نام فایل “search_string”.

دستور egrep لینوکس با مثالدستور egrep لینوکس با مثال

می‌توانید ببینید که چگونه پرچم -i به من در واکشی تمام خطوطی که حاوی رشته جستجو هستند از طریق جستجوی «غیر حساس» به من کمک کرد.

پیشنهاد می‌کنیم بخوانید:  روش رفع - bash: pip: فرمان یافت نشد

مثال 5: جستجوی رشته به عنوان یک کلمه کامل و نه به عنوان یک رشته فرعی

هنگامی که شما معمولاً یک رشته را از طریق egrep جستجو می کنید، تمام کلمات حاوی رشته را به عنوان یک رشته فرعی چاپ می کند. به عنوان مثال، جستجوی رشته “روی” اراده print تمام کلمات حاوی رشته “روی” پسندیدن ” روی”، “فقط”، “مانیتور”، “کلون”، و غیره. اگر می خواهید نتایج فقط کلمه ” را نمایش دهند.روی” به عنوان یک کلمه کامل و نه به عنوان یک رشته فرعی، می توانید از پرچم -w با egrep استفاده کنید.

نحو:

$ egrep -w نام فایل “search_string”.

مثال:

در اینجا من به دنبال رشته هستم “روی” در یک فایل نمونه:

$ egrep -من “روی” samplefile.txt

دستور egrep لینوکس با مثالدستور egrep لینوکس با مثال

در خروجی بالا می بینید که حاوی کلمه “فقط” نیز هست. با این حال، این چیزی نیست که من می خواهم زیرا من منحصراً به دنبال کلمه ” هستم.روی”. بنابراین، این دستوری است که من به جای آن استفاده خواهم کرد:

$ egrep -iw “روی” samplefile.txt

دستور egrep لینوکس با مثالدستور egrep لینوکس با مثال

اکنون نتایج جستجوی من فقط شامل خطوطی است که حاوی کلمه “روی” به عنوان یک کل کلمه.

مثال 6: چاپ فقط نام فایل هایی که دارای رشته هستند

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

نحو:

$ egrep “رشته_جستجو” filename_pattern

مثال:

در اینجا من به دنبال رشته “sample” در تمام فایل های txt در دایرکتوری فعلی هستم:

$ egrep نمونه *txt

دستور egrep لینوکس با مثالدستور egrep لینوکس با مثال

فقط نتایج جستجو print نام فایل هایی که حاوی رشته مشخص شده هستند.

مثال 7: چاپ فقط رشته جستجو از یک فایل

به جای چاپ کل خطی که شامل رشته جستجو است، می توانید از دستور egrep استفاده کنید print خود رشته رشته به تعداد دفعاتی که در فایل مشخص شده ظاهر می شود چاپ می شود.

نحو:

$ egrep -o “رشته_جستجو” نام فایل

مثال:

در این مثال، من به دنبال کلمه “This” در فایل خود هستم.

$ egrep -o این نمونه فایل_.txt

دستور egrep لینوکس با مثالدستور egrep لینوکس با مثال

توجه: این استفاده از دستور زمانی مفید است که شما به دنبال یک رشته مبتنی بر رشته هستید روی یک الگوی بیان منظم ما در یکی از مثال های بعدی عبارات منظم را به طور مفصل توضیح خواهیم داد.

مثال 8: نمایش n تعداد خط قبل، بعد یا اطراف رشته جستجو

گاهی اوقات دانستن زمینه در فایلی که در آن از یک رشته خاص استفاده شده است بسیار مهم است. egrep به این معنا مفید است که می توان از آن برای نمایش خط حاوی رشته جستجو و همچنین تعداد مشخصی از خطوط قبل، بعد و اطراف آن استفاده کرد.

این نمونه فایل متنی است که من از آن برای توضیح مثال های بعدی استفاده خواهم کرد:

دستور egrep لینوکس با مثالدستور egrep لینوکس با مثال

N تعداد خط بعد از رشته جستجو:

با استفاده از پرچم A به روش زیر، خط حاوی رشته جستجو و N تعداد خط بعد از آن نمایش داده می شود:

$ egrep <ن> “رشته_جستجو” نام فایل

مثال:

$ egrep 2 “نمونه” samplefile.txt

دستور egrep لینوکس با مثالدستور egrep لینوکس با مثال

N تعداد خط قبل از رشته جستجو:

با استفاده از پرچم B به روش زیر، خط حاوی رشته جستجو و N تعداد خط قبل از آن نمایش داده می شود:

$ egrep <ن> “رشته_جستجو” نام فایل

مثال:

$ egrep 2 “نمونه” samplefile.txt

دستور egrep لینوکس با مثالدستور egrep لینوکس با مثال

N تعداد خط قبل از رشته جستجو:

با استفاده از پرچم C به روش زیر، خط حاوی رشته جستجو و N تعداد خطوط قبل و بعد از آن نمایش داده می شود:

$ egrep -سی <ن> “رشته_جستجو” نام فایل

مثال:

$ egrep -سی 2 “نمونه” samplefile.txt

دستور egrep لینوکس با مثالدستور egrep لینوکس با مثال

مثال 9: تطبیق عبارت منظم در فایل ها

با جستجوی عبارات منظم به جای رشته های جستجوی جامد در یک فایل، دستور egrep قدرتمندتر می شود.

پیشنهاد می‌کنیم بخوانید:  استفاده و سفارشی کردن تاریخچه فرمان Bash

نحو:

$ egrep “عبارات با قاعده” نام فایل

اجازه دهید توضیح دهیم که چگونه می توانید از عبارات منظم در جستجوی egrep خود استفاده کنید:

عملگر تکرار استفاده کنید
? مورد قبل قبل؟ اختیاری است و حداکثر یک بار مطابقت دارد

* مورد قبلی قبل از * صفر یا چند بار مطابقت داده می شود
+ مورد قبلی قبل از + یک یا چند بار مطابقت داده می شود
{n} مورد قبلی دقیقاً n تعداد بار مطابقت دارد.
{n،} مورد قبلی n بار یا بیشتر مطابقت دارد
{,m} مورد قبل حداکثر m بار مطابقت دارد
{n,m} مورد قبل حداقل n بار اما نه بیشتر از m بار مطابقت دارد

مثال:

در مثال زیر، خطوط حاوی عبارت زیر مطابقت دارند:

با “Gnome” شروع می شود و به “برنامه ها” ختم می شود

دستور egrep لینوکس با مثالدستور egrep لینوکس با مثال

مثال 10: برجسته کردن رشته جستجو

هنگامی که متغیر محیطی GREP_OPTIONS را به صورت زیر تنظیم می کنید، خروجی خود را با رشته/الگوی جستجو که در نتایج برجسته شده است دریافت می کنید:

$ sudo export GREP_OPTIONS=‘–color=خودکار’ GREP_COLOR=‘100;8’

سپس می توانید رشته را به هر روشی که در مثال های این مقاله توضیح داده ایم جستجو کنید.

مثال 11: انجام جستجوی Invert در یک فایل

منظور ما از جستجوی معکوس این است که دستور egrep همه چیز را در فایل چاپ می کند، به جز خطوطی که شامل رشته جستجو هستند. ما از فایل نمونه زیر برای توضیح جستجوی معکوس از طریق egrep استفاده خواهیم کرد. ما محتویات فایل را با استفاده از دستور cat چاپ کرده ایم:

دستور egrep لینوکس با مثالدستور egrep لینوکس با مثال

نحو:

$ egrep -v “رشته_جستجو” نام فایل

مثال:

از فایل نمونه ای که ذکر کردیم، می خواهیم خط حاوی کلمه “two” را در خروجی حذف کنیم، بنابراین از دستور زیر استفاده می کنیم:

$ egrep -v “دو” samplefile_.txt

دستور egrep لینوکس با مثالدستور egrep لینوکس با مثال

می توانید ببینید که چگونه خروجی شامل همه چیز از فایل نمونه است به جز خط دوم که شامل رشته جستجوی “دو” است.

مثال 12: انجام جستجوی معکوس بر اساس روی چندین معیار/الگوی جستجو

با پرچم -v، همچنین می توانید دستور egrep را برای انجام جستجوی معکوس انجام دهید روی بیش از یک رشته/الگوی جستجو

ما از همان فایل نمونه ای که در مثال 11 ذکر کردیم برای توضیح این سناریو استفاده خواهیم کرد.

نحو:

$ egrep -v -e “رشته_جستجو”/“الگو” -e “رشته_جستجو”/“الگو”
…. نام فایل

مثال:

از فایل نمونه ای که ذکر کردیم، می خواهیم خط(های) حاوی کلمات “one” و “two” را در خروجی حذف کنیم، بنابراین از دستور زیر استفاده می کنیم:

$ egrep -v -e “یک” -e “دو” samplefile_.txt

ما دو کلمه را برای حذف با استفاده از پرچم -e ارائه کرده ایم، بنابراین خروجی به صورت زیر ظاهر می شود:

دستور egrep لینوکس با مثالدستور egrep لینوکس با مثال

مثال 13: چاپ تعداد خطوطی که با رشته جستجو مطابقت دارند

به جای چاپ رشته جستجو شده از فایل یا خطوط حاوی آن، می توانید از دستور egrep برای شمارش و print تعداد خطوط مطابق با رشته این تعداد را می توان با استفاده از پرچم -c با دستور egrep واکشی کرد.

نحو:

$ egrep نام فایل “search_string”.

مثال:

در این مثال، ما از پرچم -c برای شمارش تعداد خطوط حاوی کلمه “This” در فایل نمونه خود استفاده خواهیم کرد:

$ egrep نام فایل “This”.

دستور egrep لینوکس با مثالدستور egrep لینوکس با مثال

همچنین می توانید از ویژگی جستجوی معکوس در اینجا برای شمارش و استفاده کنید print تعداد خطوطی که شامل رشته جستجو نمی شود:

$ grep -v نام فایل “search_string”.

دستور egrep لینوکس با مثالدستور egrep لینوکس با مثال

مثال 14: نمایش شماره خطی که رشته در آن مطابقت دارد

با پرچم -n می توانید دستور egrep را به آن بسازید print خط منطبق به همراه شماره خطی که شامل رشته جستجو است.

نحو:

$ grep -n نام فایل “search_string”.

مثال:

$ grep -n “This” samplefile_.txt

دستور egrep لینوکس با مثالدستور egrep لینوکس با مثال

می توانید ببینید که چگونه شماره خطوط در مقابل نتایج جستجو نمایش داده می شود.

مثال 15: نمایش موقعیت در فایل که رشته جستجو در آن مطابقت دارد

اگر می خواهید موقعیت فایل را بدانید که رشته جستجو در آن وجود دارد، می توانید از پرچم -b با دستور egrep استفاده کنید.

$ grep -o نام فایل “search_string”.

مثال:

$ grep -o “This” samplefile_.txt

دستور egrep لینوکس با مثالدستور egrep لینوکس با مثال

نتایج جستجو print افست بایت فایلی که کلمه جستجو در آن وجود دارد. این استفاده دقیق از دستور egrep بود. با استفاده از ترکیبی از پرچم های توضیح داده شده در این مقاله، می توانید جستجوهای معنی دار و پیچیده تری انجام دهید روی فایل های شما

برای نگارش بخشهایی از این متن ممکن است از ترجمه ماشینی یا هوش مصنوعی GPT استفاده شده باشد
لطفا در صورت وجود مشکل در متن یا مفهوم نبودن توضیحات، از طریق دکمه گزارش نوشتار یا درج نظر روی این مطلب ما را از جزییات مشکل مشاهده شده مطلع کنید تا به آن رسیدگی کنیم

زمان انتشار: 1402-12-31 15:16:04

امتیاز شما به این مطلب
دیدگاه شما در خصوص مطلب چیست ؟

آدرس ایمیل شما منتشر نخواهد شد.

لطفا دیدگاه خود را با احترام به دیدگاه های دیگران و با توجه به محتوای مطلب درج کنید