از طریق منوی جستجو مطلب مورد نظر خود در وبلاگ را به سرعت پیدا کنید
روش استفاده از Regex با دستور awk
سرفصلهای مطلب
یک عبارت منظم (regex) برای یافتن یک دنباله معین از کاراکترها در یک فایل استفاده می شود. برای تعریف الگو می توان از نمادهایی مانند حروف، ارقام و کاراکترهای خاص استفاده کرد. کارهای مختلف را می توان به راحتی با استفاده از الگوهای regex تکمیل کرد. در این آموزش، روش استفاده از الگوهای regex را با دستور awk به شما نشان خواهیم داد.
کاراکترهای اساسی مورد استفاده در الگوها
بسیاری از کاراکترها را می توان برای تعریف یک الگوی regex استفاده کرد. نویسه هایی که بیشتر برای تعریف الگوهای regex استفاده می شوند در زیر تعریف شده اند.
شخصیت | شرح |
---|---|
. | مطابقت دادن هر کاراکتری بدون خط جدید (\n) |
\ | نقل قول یک متا کاراکتر جدید |
^ | ابتدای یک خط را مطابقت دهید |
$ | انتهای یک خط را مطابقت دهید |
| | جایگزین تعریف کنید |
() | یک گروه را تعریف کنید |
[] | یک کلاس کاراکتر تعریف کنید |
\w | با هر کلمه ای مطابقت دهید |
\s | با هر کاراکتر فضای سفید مطابقت دهید |
\d | با هر رقمی مطابقت دهید |
\b | هر مرز کلمه را مطابقت دهید |
یک فایل ایجاد کنید
برای دنبال کردن این آموزش، یک فایل متنی با نام ایجاد کنید products.txt. فایل باید دارای چهار فیلد باشد: شناسه، نام، نوع و قیمت.
شناسه نام نوع قیمت
مانیتور 15 اینچی p1001 100 دلار
موس p1002 A4tech 10 دلار
پرینتر سامسونگ p1003 50 دلار
p1004 اسکنر HP 60 دلار
p1005 ماوس لاجیتک 15 دلار
مثال 1: با استفاده از کلاس کاراکتر یک الگوی regex تعریف کنید
دستور awk زیر عبارت و را جستجو می کند print خطوط حاوی کاراکتر ‘n’ به دنبال کاراکترهای ‘er’.
$ بیخیال ‘/[n][er]/ {print $0} products.txt
پس از اجرای دستورات فوق خروجی زیر تولید خواهد شد. خروجی خطی را نشان می دهد که با الگو مطابقت دارد. در اینجا، فقط یک خط با الگو مطابقت دارد.
مثال 2: با استفاده از نماد ‘^’ یک الگوی regex تعریف کنید
دستور awk زیر عبارت و را جستجو می کند print خطوطی که با کاراکتر ‘p’ شروع می شوند و شامل عدد 3 می شوند.
$ بیخیال ‘/^p.*3/ {print $0} products.txt
پس از اجرای دستورات فوق خروجی زیر تولید خواهد شد. در اینجا، یک خط وجود دارد که با الگو مطابقت دارد.
مثال 3: با استفاده از تابع gsub یک الگوی regex تعریف کنید
را gsub () تابع برای جستجوی سراسری و جایگزینی متن استفاده می شود. دستور «awk» زیر کلمه «اسکنر» را جستجو می کند و قبل از چاپ نتیجه با کلمه «روتر» جایگزین می شود.
$ بیخیال ‘gsub(/اسکنر/، “روتر”)” products.txt
پس از اجرای دستورات فوق خروجی زیر تولید خواهد شد. یک خط وجود دارد که حاوی کلمه “اسکنر“، و”اسکنر“با کلمه” جایگزین می شودروترقبل از اینکه خط چاپ شود.
مثال 4: یک الگوی regex را با “*” تعریف کنید
دستور awk زیر عبارت و را جستجو می کند print هر رشته ای که با ‘Mo’ شروع می شود و هر کاراکتر بعدی را شامل می شود.
$ بیخیال ‘/Mo*/ {print $0} products.txt
پس از اجرای دستورات فوق خروجی زیر تولید خواهد شد. سه خط با الگو مطابقت دارد: دو خط حاوی کلمه “موشو یک خط حاوی کلمه استنظارت کنید‘.
مثال 5: با استفاده از نماد ‘$’ یک الگوی regex تعریف کنید
دستور awk زیر عبارت و را جستجو می کند print خطوطی در فایل که به عدد 5 ختم می شود.
$ بیخیال ‘/5$/ {print $0} products.txt
پس از اجرای دستورات فوق خروجی زیر تولید خواهد شد. فقط یک خط در فایل وجود دارد که به عدد 5 ختم می شود.
مثال 6: یک الگوی regex را با استفاده از ‘^’ و ‘|’ تعریف کنید. نمادها
‘^نماد ” شروع یک خط را نشان می دهد و “|نماد ‘ یک عبارت OR منطقی را نشان می دهد. دستور awk زیر عبارت و را جستجو می کند print خطوطی که با کاراکتر شروع می شوندپ“و حاوی یکی”اسکنر‘ یا ‘موش‘.
$ بیخیال ‘/^p.* (اسکنر|موس)/’ products.txt
پس از اجرای دستورات فوق خروجی زیر تولید خواهد شد. خروجی نشان می دهد که دو خط حاوی کلمه “موشو یک خط حاوی کلمه استاسکنر‘. سه خط با کاراکتر شروع می شودپ‘.
مثال 7: با استفاده از نماد ‘+’ یک الگوی regex تعریف کنید
‘+عملگر ‘ برای یافتن حداقل یک مورد استفاده می شود. دستور awk زیر عبارت و را جستجو می کند print خطوطی که حاوی کاراکتر هستندn‘ حد اقل یک بار.
$ بیخیال ‘/n+/{print}’ products.txt
پس از اجرای دستورات فوق خروجی زیر تولید خواهد شد. اینجا شخصیت “n‘ حاوی حداقل یک بار در خطوطی که حاوی کلمات هستند رخ می دهد مانیتور، چاپگر و اسکنر.
مثال 8: با استفاده از تابع gsub () یک الگوی regex تعریف کنید
دستور «awk» زیر به صورت جهانی کلمه «» را جستجو می کند.چاپگر“و با کلمه” جایگزین کنیدنظارت کنید‘ با استفاده از تابع gsub()..
$ بیخیال ‘gsub(/Printer/, “Monitor”) { print$0} products.txt
پس از اجرای دستورات فوق خروجی زیر تولید خواهد شد. خط چهارم فایل حاوی کلمه “چاپگر‘دوبار و در خروجی’چاپگر“با کلمه” جایگزین شده استنظارت کنید‘.
نتیجه
بسیاری از نمادها و توابع را می توان برای تعریف الگوهای regex برای جستجوی مختلف و جایگزینی وظایف استفاده کرد. برخی از نمادها که معمولاً در الگوهای regex استفاده می شوند در این آموزش با دستور ‘awk’ اعمال می شوند.
لطفا در صورت وجود مشکل در متن یا مفهوم نبودن توضیحات، از طریق دکمه گزارش نوشتار یا درج نظر روی این مطلب ما را از جزییات مشکل مشاهده شده مطلع کنید تا به آن رسیدگی کنیم
زمان انتشار: 1402-12-31 06:55:05