از طریق منوی جستجو مطلب مورد نظر خود در وبلاگ را به سرعت پیدا کنید
یافتن رشته ها در فایل های متنی با استفاده از grep با عبارت منظم
سرفصلهای مطلب
grep یکی از محبوب ترین ابزارها برای جستجو و یافتن رشته ها در یک فایل متنی است. نام grep از دستوری در ابزار ویرایشگر خط Unix ed که اکنون منسوخ شده است – فرمان ed برای جستجو گرفته شده است. در سطح جهانی از طریق یک فایل برای a عبارت منظم و سپس چاپ آن خطوط بود g/re/p، جایی که re عبارت منظمی بود که استفاده می کردید. در نهایت دستور grep برای انجام این جستجو نوشته شد روی یک فایل در صورت عدم استفاده از ed.
در این مقاله، ما به شما نشان میدهیم که جستجوی رشتهای پیشرفته را با استفاده از Grep با عبارت منظم با دادن 10 دست انجام دهید.روی مثال ها روی پیاده سازی های آن بسیاری از مثالهای مورد بحث در این مقاله مفاهیم کاربردی دارند، به این معنی که میتوانید از آنها در برنامهنویسی روزانه لینوکس خود استفاده کنید. نمونههای زیر برخی از نمونههای regexp را برای الگوهایی که معمولاً جستجو میشوند، توضیح میدهند.
مثال 1: یک منشور منفرد را در یک فایل متنی پیدا کنید
برای خروجی خطوطی در فایل ‘book’ که حاوی نویسه ‘$’ هستند، تایپ کنید:
مثال 2: یک رشته واحد را در یک فایل متنی پیدا کنید
برای خروجی خطوط در فایل “book” که حاوی رشته “$14.99” است، تایپ کنید:
مثال 3: یک منشور خاص در یک فایل متنی پیدا کنید
برای خروجی خطوطی در فایل ‘book’ که حاوی کاراکتر ‘\’ هستند، تایپ کنید:
مثال 4: تطبیق خطوطی که با متن خاصی شروع می شوند
از «ˆ» در یک regexp برای نشان دادن ابتدای یک خط استفاده کنید.
برای خروجی تمام خطوط در ‘/usr/dict/words’ که با ‘pro’ شروع می شود، تایپ کنید:
برای خروجی تمام خطوط در فایل “book” که با متن “در ابتدا” شروع می شود، صرف نظر از حروف کوچک، تایپ کنید:
توجه داشته باشید: این رجیکسها با نویسهها نقلقول شدند. این به این دلیل است که برخی از پوسته ها در غیر این صورت با کاراکتر ‘ˆ’ به عنوان یک “متاکاکتر” خاص برخورد می کنند.
علاوه بر جستجوی کلمات و عبارات، می توانید از grep برای جستجوی الگوهای متنی پیچیده به نام عبارات منظم استفاده کنید. یک عبارت منظم – یا “regexp” – یک رشته متنی از کاراکترهای خاص است که a را مشخص می کند تنظیم از الگوهای مطابقت
از نظر فنی، الگوهای کلمات یا عبارتها عباراتی منظم هستند – فقط موارد بسیار ساده. در یک عبارت منظم، اکثر کاراکترها – از جمله حروف و اعداد – خود را نشان می دهند. برای مثال الگوی regexp 1 با رشته “1” و الگو مطابقت دارد پسر با رشته “پسر” مطابقت دارد.
تعدادی کاراکتر رزرو شده به نام متاکاراکتر وجود دارد که خود را در یک عبارت منظم نشان نمی دهند، اما معنای خاصی دارند که برای ساختن الگوهای پیچیده استفاده می شود. این متا کاراکترها به شرح زیر است: .، *، [, ]، ˆ، $، و \. خوب است توجه داشته باشید که چنین متا کاراکترهایی تقریباً در بین همه رایج است مشترک و خاص توزیع های لینوکس اینجا مقاله خوبی است که معانی خاصی از متاکاراکترها را پوشش می دهد و نمونه هایی از کاربرد آنها را ارائه می دهد.
مثال 5: تطبیق خطوطی که به متن خاصی ختم می شوند
از «$» بهعنوان آخرین کاراکتر متن نقلشده برای مطابقت با آن متن فقط در انتهای یک خط استفاده کنید. برای خروجی خطوط در فایل “going” که با علامت تعجب ختم می شود، تایپ کنید:
مثال 6: تطبیق خطوط با طول معین
برای تطبیق خطوط با طول خاص، از آن تعداد «.» استفاده کنید. کاراکترهای بین ‘ˆ’ و ‘$’—به عنوان مثال، برای مطابقت با تمام خطوطی که دو نویسه (یا ستون) عرض دارند، از ‘ˆ..$’ به عنوان regexp برای جستجو استفاده کنید.
برای خروجی تمام خطوط در ‘/usr/dict/words’ که دقیقاً سه کاراکتر عرض دارند، تایپ کنید:
برای خطوط طولانی تر، استفاده از ساختار متفاوت مفیدتر است: ‘ˆ.\{number\}$’، که در آن عدد تعداد خطوطی است که باید مطابقت داشته باشند. برای تعیین محدوده ای از اعداد از «» استفاده کنید.
برای خروجی تمام خطوط در ‘/usr/dict/words’ که دقیقاً دوازده کاراکتر عرض دارند، تایپ کنید:
برای خروجی تمام خطوط در ‘/usr/dict/words’ که عرض آنها بیست و دو یا بیشتر است، تایپ کنید:
مثال 7: خطوط منطبق که حاوی هر یک از Regexps هستند
برای مطابقت دادن خطوطی که حاوی هر یک از تعدادی regexps هستند، هر یک از regexps را برای جستجوی بین عملگرهای متناوب (‘\|’) به عنوان regexp برای جستجو مشخص کنید. خطوط حاوی هر یک از regex های داده شده خروجی خواهند شد.
برای خروجی تمام خطوط در «playboy» که شامل الگوهای «کتاب» یا «کیک» هستند، تایپ کنید:
مثال 8: خطوط منطبق که حاوی همه برخی از Regexps هستند
برای خروجی خطوطی که مطابقت دارند همه از تعدادی regexps، از grep برای خروجی خطوط حاوی اولین regexp که میخواهید مطابقت داشته باشد، استفاده کنید و خروجی را با regexp دوم به عنوان آرگومان به یک grep لوله کنید. به افزودن لولهها به جستجوهای grep برای همه regexهایی که میخواهید جستجو کنید، ادامه دهید.
برای خروجی تمام خطوط در «لیست پخش» که شامل هر دو الگوی «ساحل» و «آسمان» است، صرف نظر از حروف، تایپ کنید:
مثال 9: خطوط منطبق که فقط شامل کاراکترهای خاصی هستند
برای مطابقت دادن خطوطی که فقط شامل کاراکترهای خاصی هستند، از regexp ‘ˆ استفاده کنید[characters]*$’، که در آن کاراکترها آنهایی هستند که باید مطابقت داشته باشند. برای خروجی خطوط در ‘/usr/dict/words’ که فقط دارای حروف صدادار هستند، تایپ کنید:
گزینه ‘-i’ با کاراکترها بدون در نظر گرفتن حروف مورد منطبق است. بنابراین، در این مثال، تمام حروف صدادار بدون توجه به حروف با هم مطابقت دارند.
مثال 10: یافتن عبارات بدون توجه به فاصله
یکی از راههای جستجوی عبارتی که ممکن است با فاصلههای اضافی بین کلمات، یا در سراسر یک خط یا page break، حذف تمام خطوط و فضاهای اضافی از ورودی، و سپس گرفتن آن است. برای انجام این کار، ورودی را به tr با ”\r\n:\>\|-” به عنوان آرگومان برای گزینه ‘-d’ وارد کنید (حذف تمام خطوط شکست از ورودی). آن را با گزینه ‘-u’ به فیلتر fmt وارد کنید (خروجی متن با فاصله یکنواخت). و آن را برای grep با الگوی جستجو لوله کنید.
برای جستجوی رشته «همزمان با» در میان شکستههای خط در فایل «docs»، تایپ کنید:
-‘ | fmt -u | grep در عین حال زمان مانند‘
خلاصه
در این مقاله 10 مثال کاربردی از استفاده از دستور Grep Linux برای جستجو و یافتن رشته ها در یک فایل متنی را بررسی کردیم. در طول راه، ما یاد گرفتیم که چگونه از عبارات منظم در ارتباط با Grep برای انجام جستجوهای پیچیده استفاده کنیم روی فایل های متنی در حال حاضر شما ایده بهتری دارید روی عملکردهای جستجوی لینوکس چقدر قدرتمند هستند.
در اینجا منابع اضافی برای کسانی که علاقه مند به یادگیری بیشتر در مورد برنامه نویسی لینوکس هستند وجود دارد:
منابع برای مدیران سیستم
- راهنمای مدیریت سیستم لینوکس – سیستم عامل لینوکس چیست و چگونه کار می کند
- راهنمای مدیریت سیستم لینوکس – مروری بر حافظه مجازی لینوکس و کش بافر دیسک
- راهنمای مدیریت سیستم لینوکس – بهترین روش ها برای نظارت بر سیستم های لینوکس
- راهنمای مدیریت سیستم لینوکس – بهترین روش ها برای انجام بوت و خاموش شدن لینوکس
- راهنمای مدیریت سیستم لینوکس – بهترین روش ها برای ایجاد و مدیریت عملیات پشتیبان گیری
منابع برای برنامه نویسان هسته لینوکس
- روش عملکرد مدیریت حافظه سیستم عامل لینوکس
- بررسی جامع فرآیندهای سیستم عامل کرنل لینوکس
- مکانیسم های پشت مدیریت وظایف هسته لینوکس چیست؟
فرهنگ لغت سیستم فایل لینوکس
لطفا در صورت وجود مشکل در متن یا مفهوم نبودن توضیحات، از طریق دکمه گزارش نوشتار یا درج نظر روی این مطلب ما را از جزییات مشکل مشاهده شده مطلع کنید تا به آن رسیدگی کنیم
زمان انتشار: 1402-12-31 16:12:05