از طریق منوی جستجو مطلب مورد نظر خود در وبلاگ را به سرعت پیدا کنید
دستور egrep لینوکس با مثال
سرفصلهای مطلب
دستور egrep متعلق به خانواده دستور grep است که برای جستجوی الگو در لینوکس استفاده می شود. اگر از دستور grep استفاده کرده اید، egrep مانند grep -E (grep Extended regex’) عمل می کند. Egrep یک فایل خاص را از خط به خط اسکن می کند و خط(هایی) را که شامل رشته جستجو/عبارت معمولی هستند چاپ می کند. در این مقاله 15 نمونه مفید از دستورات egrep را توضیح خواهیم داد که به افراد تازه کار و حتی متخصصان کمک می کند تا جستجوهای معنی دار در لینوکس را انجام دهند. این مثال ها را انجام داده ایم. روی یک سیستم Debian 10 Buster اما می توان آنها را به راحتی تکرار کرد روی اکثر توزیع های لینوکس
مثال 1: جستجوی یک رشته خاص در یک فایل
این رایج ترین استفاده از دستور egrep است. کاری که شما انجام میدهید این است که رشتهای را که میخواهید جستجو کنید و نام فایلی را که میخواهید آن رشته را جستجو کنید، مشخص میکنید. سپس نتیجه، کل خط حاوی رشته جستجو شده را نشان میدهد.
نحو:
مثال:
در این مثال، من کلمه “debian” را در فایل متنی مشخص شده جستجو کردم. می توانید ببینید که چگونه نتایج کل خط حاوی کلمه “debian” را نشان می دهد:
مثال 2: جستجوی یک رشته خاص در چندین فایل
با دستور egrep، می توانید یک رشته را در میان چندین فایل موجود در یک فهرست جستجو کنید. شما فقط باید در ارائه یک “الگو” برای فایل های جستجو شده کمی دقیق تر باشید. با مثالی که ارائه خواهیم داد این موضوع بیشتر روشن خواهد شد.
نحو:
مثال:
در اینجا، کلمه “debian” را در تمامی فایل های txt. با تعیین الگوی نام فایل به صورت زیر جستجو می کنیم:
این دستور تمام خطوط را به همراه نام فایلهایی که حاوی کلمه “debian” هستند از تمام فایلهای txt در فهرست فعلی چاپ کرده است.
مثال 3: جستجوی بازگشتی رشته در کل دایرکتوری
هنگامی که می خواهید یک رشته را در تمام فایل های یک دایرکتوری و زیر شاخه های آن جستجو کنید، می توانید این کار را با استفاده از پرچم -r با دستور egrep انجام دهید.
نحو:
مثال:
در این مثال، من در حال جستجوی کلمه “نمونه” در فایل های کل دایرکتوری فعلی (دانلودها) هستم.
نتایج شامل تمام خطوط به همراه نام فایلها است که حاوی کلمه «نمونه» از همه فایلهای فهرست دانلودها و زیر شاخههای آن است.
مثال 4: انجام جستجوی غیر حساس به حروف بزرگ و کوچک
با پرچم -i می توانید از دستور egrep استفاده کنید print بر اساس نتایج روی یک رشته جستجو بدون نیاز به نگرانی در مورد مورد آن.
نحو:
مثال:
در اینجا، من کلمه “debian” را جستجو میکنم و میخواهم که نتایج تمام خطوط فایل حاوی کلمه “debian” یا “Debian، صرف نظر از نوع آن، نمایش داده شود.
میتوانید ببینید که چگونه پرچم -i به من در واکشی تمام خطوطی که حاوی رشته جستجو هستند از طریق جستجوی «غیر حساس» به من کمک کرد.
مثال 5: جستجوی رشته به عنوان یک کلمه کامل و نه به عنوان یک رشته فرعی
هنگامی که شما معمولاً یک رشته را از طریق egrep جستجو می کنید، تمام کلمات حاوی رشته را به عنوان یک رشته فرعی چاپ می کند. به عنوان مثال، جستجوی رشته “روی” اراده print تمام کلمات حاوی رشته “روی” پسندیدن ” روی”، “فقط”، “مانیتور”، “کلون”، و غیره. اگر می خواهید نتایج فقط کلمه ” را نمایش دهند.روی” به عنوان یک کلمه کامل و نه به عنوان یک رشته فرعی، می توانید از پرچم -w با egrep استفاده کنید.
نحو:
مثال:
در اینجا من به دنبال رشته هستم “روی” در یک فایل نمونه:
در خروجی بالا می بینید که حاوی کلمه “فقط” نیز هست. با این حال، این چیزی نیست که من می خواهم زیرا من منحصراً به دنبال کلمه ” هستم.روی”. بنابراین، این دستوری است که من به جای آن استفاده خواهم کرد:
اکنون نتایج جستجوی من فقط شامل خطوطی است که حاوی کلمه “روی” به عنوان یک کل کلمه.
مثال 6: چاپ فقط نام فایل هایی که دارای رشته هستند
گاهی اوقات ما فقط میخواهیم نام فایلهایی را که حاوی یک رشته خاص هستند واکشی کنیم، نه اینکه خطوط حاوی آن را چاپ کنیم. این را می توان با استفاده از پرچم -l (حروف کوچک L) با دستور egrep انجام داد.
نحو:
مثال:
در اینجا من به دنبال رشته “sample” در تمام فایل های txt در دایرکتوری فعلی هستم:
فقط نتایج جستجو print نام فایل هایی که حاوی رشته مشخص شده هستند.
مثال 7: چاپ فقط رشته جستجو از یک فایل
به جای چاپ کل خطی که شامل رشته جستجو است، می توانید از دستور egrep استفاده کنید print خود رشته رشته به تعداد دفعاتی که در فایل مشخص شده ظاهر می شود چاپ می شود.
نحو:
مثال:
در این مثال، من به دنبال کلمه “This” در فایل خود هستم.
توجه: این استفاده از دستور زمانی مفید است که شما به دنبال یک رشته مبتنی بر رشته هستید روی یک الگوی بیان منظم ما در یکی از مثال های بعدی عبارات منظم را به طور مفصل توضیح خواهیم داد.
مثال 8: نمایش n تعداد خط قبل، بعد یا اطراف رشته جستجو
گاهی اوقات دانستن زمینه در فایلی که در آن از یک رشته خاص استفاده شده است بسیار مهم است. egrep به این معنا مفید است که می توان از آن برای نمایش خط حاوی رشته جستجو و همچنین تعداد مشخصی از خطوط قبل، بعد و اطراف آن استفاده کرد.
این نمونه فایل متنی است که من از آن برای توضیح مثال های بعدی استفاده خواهم کرد:
N تعداد خط بعد از رشته جستجو:
با استفاده از پرچم A به روش زیر، خط حاوی رشته جستجو و N تعداد خط بعد از آن نمایش داده می شود:
مثال:
N تعداد خط قبل از رشته جستجو:
با استفاده از پرچم B به روش زیر، خط حاوی رشته جستجو و N تعداد خط قبل از آن نمایش داده می شود:
مثال:
N تعداد خط قبل از رشته جستجو:
با استفاده از پرچم C به روش زیر، خط حاوی رشته جستجو و N تعداد خطوط قبل و بعد از آن نمایش داده می شود:
مثال:
مثال 9: تطبیق عبارت منظم در فایل ها
با جستجوی عبارات منظم به جای رشته های جستجوی جامد در یک فایل، دستور egrep قدرتمندتر می شود.
نحو:
اجازه دهید توضیح دهیم که چگونه می توانید از عبارات منظم در جستجوی egrep خود استفاده کنید:
عملگر تکرار | استفاده کنید |
? | مورد قبل قبل؟ اختیاری است و حداکثر یک بار مطابقت دارد |
* | مورد قبلی قبل از * صفر یا چند بار مطابقت داده می شود |
+ | مورد قبلی قبل از + یک یا چند بار مطابقت داده می شود |
{n} | مورد قبلی دقیقاً n تعداد بار مطابقت دارد. |
{n،} | مورد قبلی n بار یا بیشتر مطابقت دارد |
{,m} | مورد قبل حداکثر m بار مطابقت دارد |
{n,m} | مورد قبل حداقل n بار اما نه بیشتر از m بار مطابقت دارد |
مثال:
در مثال زیر، خطوط حاوی عبارت زیر مطابقت دارند:
با “Gnome” شروع می شود و به “برنامه ها” ختم می شود
مثال 10: برجسته کردن رشته جستجو
هنگامی که متغیر محیطی GREP_OPTIONS را به صورت زیر تنظیم می کنید، خروجی خود را با رشته/الگوی جستجو که در نتایج برجسته شده است دریافت می کنید:
سپس می توانید رشته را به هر روشی که در مثال های این مقاله توضیح داده ایم جستجو کنید.
مثال 11: انجام جستجوی Invert در یک فایل
منظور ما از جستجوی معکوس این است که دستور egrep همه چیز را در فایل چاپ می کند، به جز خطوطی که شامل رشته جستجو هستند. ما از فایل نمونه زیر برای توضیح جستجوی معکوس از طریق egrep استفاده خواهیم کرد. ما محتویات فایل را با استفاده از دستور cat چاپ کرده ایم:
نحو:
مثال:
از فایل نمونه ای که ذکر کردیم، می خواهیم خط حاوی کلمه “two” را در خروجی حذف کنیم، بنابراین از دستور زیر استفاده می کنیم:
می توانید ببینید که چگونه خروجی شامل همه چیز از فایل نمونه است به جز خط دوم که شامل رشته جستجوی “دو” است.
مثال 12: انجام جستجوی معکوس بر اساس روی چندین معیار/الگوی جستجو
با پرچم -v، همچنین می توانید دستور egrep را برای انجام جستجوی معکوس انجام دهید روی بیش از یک رشته/الگوی جستجو
ما از همان فایل نمونه ای که در مثال 11 ذکر کردیم برای توضیح این سناریو استفاده خواهیم کرد.
نحو:
…. نام فایل
مثال:
از فایل نمونه ای که ذکر کردیم، می خواهیم خط(های) حاوی کلمات “one” و “two” را در خروجی حذف کنیم، بنابراین از دستور زیر استفاده می کنیم:
ما دو کلمه را برای حذف با استفاده از پرچم -e ارائه کرده ایم، بنابراین خروجی به صورت زیر ظاهر می شود:
مثال 13: چاپ تعداد خطوطی که با رشته جستجو مطابقت دارند
به جای چاپ رشته جستجو شده از فایل یا خطوط حاوی آن، می توانید از دستور egrep برای شمارش و print تعداد خطوط مطابق با رشته این تعداد را می توان با استفاده از پرچم -c با دستور egrep واکشی کرد.
نحو:
مثال:
در این مثال، ما از پرچم -c برای شمارش تعداد خطوط حاوی کلمه “This” در فایل نمونه خود استفاده خواهیم کرد:
همچنین می توانید از ویژگی جستجوی معکوس در اینجا برای شمارش و استفاده کنید print تعداد خطوطی که شامل رشته جستجو نمی شود:
مثال 14: نمایش شماره خطی که رشته در آن مطابقت دارد
با پرچم -n می توانید دستور egrep را به آن بسازید print خط منطبق به همراه شماره خطی که شامل رشته جستجو است.
نحو:
مثال:
می توانید ببینید که چگونه شماره خطوط در مقابل نتایج جستجو نمایش داده می شود.
مثال 15: نمایش موقعیت در فایل که رشته جستجو در آن مطابقت دارد
اگر می خواهید موقعیت فایل را بدانید که رشته جستجو در آن وجود دارد، می توانید از پرچم -b با دستور egrep استفاده کنید.
مثال:
نتایج جستجو print افست بایت فایلی که کلمه جستجو در آن وجود دارد. این استفاده دقیق از دستور egrep بود. با استفاده از ترکیبی از پرچم های توضیح داده شده در این مقاله، می توانید جستجوهای معنی دار و پیچیده تری انجام دهید روی فایل های شما
لطفا در صورت وجود مشکل در متن یا مفهوم نبودن توضیحات، از طریق دکمه گزارش نوشتار یا درج نظر روی این مطلب ما را از جزییات مشکل مشاهده شده مطلع کنید تا به آن رسیدگی کنیم
زمان انتشار: 1402-12-31 15:16:04