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

سرور مجازی NVMe

روش درک و اجرای عبارات منظم Bash

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


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

فهرست مطالب:

  1. معرفی
  2. Regex برای تطبیق اعداد
  3. Regex برای رشته تطبیق
  4. Regex برای جستجو و جایگزینی رشته
  5. Regex برای جستجوی محتوا در فایل
  6. Regex برای تغییر محتوای یک فایل
  7. Regex برای اعتبارسنجی آدرس ایمیل
  8. Regex برای اعتبارسنجی شماره تلفن
  9. Regex برای اعتبارسنجی نام کاربری و رمز عبور

معرفی

برخی از شخصیت های خاص استفاده شده که در الگوی بیان منظم برای مطابقت یا جستجو و جایگزینی رشته استفاده می شوند در زیر ذکر شده است:

شخصیت هدف
. برای جستجوی هر کاراکتری به جز خط جدید استفاده می شود.
^ برای جستجو در ابتدای متن استفاده می شود.
$ برای جستجو در انتهای متن استفاده می شود.
\b برای جستجوی یک کاراکتر بک اسپیس استفاده می شود.
\n برای جستجوی یک کاراکتر خط جدید استفاده می شود.
\ t برای جستجوی یک کاراکتر برگه استفاده می شود.
\r برای جستجوی کاراکتر بازگشت کالسکه استفاده می شود.
\d برای جستجوی کاراکتر رقمی استفاده می شود.
\ D برای جستجوی کاراکتر غیر رقمی استفاده می شود.
\s برای جستجوی کاراکتر فضای خالی استفاده می شود.
\S برای جستجوی کاراکتر بدون فضای سفید استفاده می شود.

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

دامنه هدف
[a-z] برای جستجوی تمام حروف الفبای کوچک استفاده می شود.
[A-Z] برای جستجوی تمام حروف الفبای بزرگ استفاده می شود.
[0-9] برای جستجوی تمام کاراکترهای عددی استفاده می شود.
[a-zA-Z] برای جستجوی تمام حروف الفبا استفاده می شود.
[0-9a-zA-Z] برای جستجوی تمام کاراکترهای الفبایی استفاده می شود.
[^A-Z] برای جستجوی همه کاراکترها به جز کاراکترهای بزرگ استفاده می شود.
[^0-9] برای جستجوی همه کاراکترها به جز کاراکترهای عددی استفاده می شود.

برو به بالا

Regex برای تطبیق اعداد

استفاده از [0-9] عبارت در اسکریپت زیر نشان داده شده است تا بررسی شود که آیا مقدار ورودی یک عدد است یا خیر. اگر ورودی که از کاربر گرفته می شود یک عدد باشد، مقدار موفقیت چاپ می شود. در غیر این صورت پیغام خطا چاپ می شود.

#!/صندوقچه/bash

#از کاربر ورودی بگیرید

خواندن “سن خود را وارد کنید: “ سن

#بررسی کنید که آیا مقدار ورودی معتبر است یا نامعتبر

اگر [[ $age =~ [09] ]]; سپس

#پیام را برای داده های معتبر چاپ کنید

echo سن دلار ارزش سنی معتبر است.”

دیگر

#چاپ پیام برای داده های نامعتبر

echo “مقدار ورودی باید یک عدد باشد.”

فی

خروجی زیر پس از اجرای اسکریپت با مقدار ورودی 70 ظاهر می شود:

روش درک و اجرای عبارات منظم Bash

خروجی زیر پس از اجرای اسکریپت با مقدار ورودی “test” ظاهر می شود:

روش درک و اجرای عبارات منظم Bashروش درک و اجرای عبارات منظم Bash

برو به بالا

Regex برای رشته تطبیق

استفاده از [a-zA-Z] عبارت در اسکریپت زیر نشان داده شده است تا بررسی شود که آیا مقدار ورودی شامل همه کاراکترهای الفبا است یا خیر. اگر ورودی که از کاربر گرفته می شود شامل تمام نویسه های الفبایی باشد، یک مقدار موفقیت چاپ می شود. در غیر این صورت پیغام خطا چاپ می شود.

#!/صندوقچه/bash

#از کاربر ورودی بگیرید

خواندن “نام کتاب را وارد کنید:” bname

#بررسی کنید که آیا مقدار ورودی معتبر است یا نامعتبر

اگر [[ $bname =~ [a-zA-z] ]]

سپس

#پیام را برای داده های معتبر چاپ کنید

echo $bname داده معتبر است.”

دیگر

#پیام را برای داده های نامعتبر چاپ کنید

echo “مقدار ورودی باید یک رشته باشد.”

فی

خروجی زیر پس از اجرای اسکریپت با مقدار “Shell Programming” ظاهر می شود:

روش درک و اجرای عبارات منظم Bashروش درک و اجرای عبارات منظم Bash

خروجی زیر پس از اجرای اسکریپت با مقدار 230 ظاهر می شود:

روش درک و اجرای عبارات منظم Bashروش درک و اجرای عبارات منظم Bash

برو به بالا

Regex برای جستجو و جایگزینی رشته

اسکریپت زیر استفاده از الگوی عبارت منظم را برای جستجو و جایگزینی بخش خاصی از مقدار رشته نشان می دهد. یک مقدار رشته از کاربر گرفته می شود. اگر رشته ورودی دارای هر کاراکتری از “a” تا “m” باشد، آن کاراکترها با کاراکتر “_” جایگزین می شوند. “/[a-m]الگوی /” در اسکریپت برای جستجوی کاراکترها استفاده می شود. سپس، هر دو رشته اصلی و رشته جایگزین در خروجی چاپ می شوند.

#!/صندوقچه/bash

پیشنهاد می‌کنیم بخوانید:  چگونه می توانم دایرکتوری ها را از grep -R حذف کنم؟

#از کاربر ورودی بگیرید

خواندن “یک مقدار رشته را وارد کنید:” خ

#رشته را تغییر دهید روی الگو

modified_Str=${Str//[a-m]/_}

#مقدار رشته اصلی را چاپ کنید

echo «رشته اصلی است $Str

#مقدار رشته جایگزین شده را چاپ کنید

echo “رشته اصلاح شده است $modified_Str

خروجی زیر پس از اجرای اسکریپت با مقدار ورودی “hello” ظاهر می شود. در اینجا، چهار کاراکتر از مقدار رشته با کاراکتر “_” جایگزین می شود. رشته جایگزین شده “____o” است:

روش درک و اجرای عبارات منظم Bashروش درک و اجرای عبارات منظم Bash

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

روش درک و اجرای عبارات منظم Bashروش درک و اجرای عبارات منظم Bash

برو به بالا

Regex برای جستجوی محتوا در فایل

قبل از بررسی اسکریپت این مثال، یک فایل متنی با نام “products.txt” با محتوای زیر ایجاد کنید.

products.txt

قیمت شناسنامه

1090 نظارت کنید 50

2378 موش 10

4521 چاپگر 100

5682 صفحه کلید 25

دستور grep یکی از گزینه‌های جستجوی رشته خاصی در فایل در Bash است terminal. دستور “grep” زیر آن خطوطی از فایل “products.txt” را که با “00” ختم می شود، جستجو می کند.

$ grep ’00$’ products.txt

خروجی زیر پس از اجرای دستور grep ظاهر می شود. یک خط در فایل وجود دارد که با الگو مطابقت دارد و آن خط در خروجی چاپ می شود:

روش درک و اجرای عبارات منظم Bashروش درک و اجرای عبارات منظم Bash

روش جستجوی خطوط خاص از یک فایل با استفاده از یک عبارت منظم در اسکریپت Bash در اسکریپت زیر نشان داده شده است. نام فایل از command-line مقدار آرگومان و محتوای فایل با استفاده از حلقه “while” خوانده می شود اگر هر خطی حاوی هر کاراکتری از “L” تا “M” باشد. سپس، آن خط در خروجی چاپ می شود.

#!/صندوقچه/bash

#فایل را خط به خط بخوانید

در حالی که خواندن -r خط

انجام دادن

#جستجوی خطوط حاوی کاراکترهای بین ‘L’ تا ‘M’

اگر [[ $line =~ [L-M] ]]

سپس

#خط مطابق را چاپ کنید

echo خط $

فی

#فایلی که در آرگومان اول ارسال شده است را بخوانید

انجام شده < 1 دلار

خروجی زیر پس از اجرای اسکریپت با مقدار آرگومان فایل “products.txt” ظاهر می شود. این فایل شامل دو خط منطبق با الگو است:

روش درک و اجرای عبارات منظم Bashروش درک و اجرای عبارات منظم Bash

برو به بالا

Regex برای تغییر محتوای یک فایل

چندین دستور Bash در Bash برای جستجو و جایگزینی محتوای یک فایل وجود دارد. دستور “sed” یکی از آنهاست. اسکریپت زیر نام فایل را از command-line بحث و جدل. رشته «جستجو» و رشته «جایگزین» از کاربر گرفته شده است. اگر مقادیر ورودی خالی نباشد و نام فایلی که به عنوان ارسال می شود command-line مقدار آرگومان شامل هر رشته ای است که با کلمه جستجو مطابقت دارد، رشته مطابق با رشته “replace” جایگزین می شود. دستور “sed” با گزینه “-i” و الگوهای جستجو و جایگزینی در اسکریپت برای تغییر محتوای فایل استفاده می شود.

#!/صندوقچه/bash

#نام فایل را بخوانید

نام فایل=1 دلار

#رشته را برای جستجو بردارید

خواندن “رشته جستجو را وارد کنید:” src

#رشته را برای تعویض بردارید

خواندن “رشته جایگزین را وارد کنید:” هرزه

اگر [[ ! -z $src && ! -z $rep ]];

سپس

#جستجو کنید و رشته را در فایل جایگزین کنید

sed -من “s/$src/$rep/” $filename

فی

برای بررسی محتوای فایل “products.txt” دستور زیر را اجرا کنید. با توجه به خروجی، فایل شامل پنج خط است:

$ گربه products.txt

دستور زیر را برای اجرای اسکریپت با دادن فایل “products.txt” به عنوان اولین فایل اجرا کنید command-line استدلالی که قبلا ایجاد شده بود. با توجه به خروجی، “صفحه کلید” به عنوان رشته جستجو و “اسکنر” به عنوان رشته جایگزین در نظر گرفته می شود. رشته «جستجو» در فایل «products.txt» وجود دارد. بنابراین، محتوای فایل تغییر خواهد کرد.

سپس، دستور قبلی «cat» را دوباره اجرا کنید تا محتوای فایل «products.txt» را بررسی کنید. با توجه به خروجی، کلمه “صفحه کلید” با کلمه “اسکنر” جایگزین می شود.

روش درک و اجرای عبارات منظم Bashروش درک و اجرای عبارات منظم Bash

برو به بالا

Regex برای اعتبارسنجی آدرس ایمیل

یکی از اهداف اصلی استفاده از عبارات منظم، اعتبارسنجی داده ها است. استفاده های بسیار ساده از الگوهای بیان منظم در مثال های قبلی نشان داده شده است. پیچیدگی الگو بر اساس افزایش خواهد یافت روی نوع اعتبار سنجی برای تأیید اعتبار یک آدرس ایمیل باید یک الگوی عبارت منظم طولانی بنویسید. اسکریپت زیر روش اعتبارسنجی یک آدرس ایمیل را با استفاده از یک الگوی عبارت منظم نشان می دهد. یک آدرس ایمیل شامل چندین بخش است. قسمت اول شامل نام کاربری است که ممکن است شامل هر کاراکتر الفبایی، نقطه (.)، زیر خط (_) و خط فاصله (-) باشد. بعد، “@” در ایمیل استفاده می شود. قسمت آخر ایمیل حاوی نام دامنه است که می تواند به دو تا چهار کاراکتر ختم شود. طبق اسکریپت ، یک آدرس ایمیل از کاربر گرفته می شود و ایمیل معتبر یا نامعتبر است و توسط یک الگوی بیان منظم بررسی می شود.

#!/صندوقچه/bash

پیشنهاد می‌کنیم بخوانید:  فرار از یک نقل قول در Bash

#از کاربر آدرس ایمیل بگیرید

خواندن “آدرس ایمیل خود را وارد کنید:” ما

#بررسی کنید که آیا آدرس ایمیل معتبر است یا نامعتبر

اگر [[ $em =~ ^[a-zA-Z0-9._-]+@[a-zA-Z0-9.-]+\.[a-zA-Z]{2،4}$ ]]

سپس

#پیام را برای آدرس ایمیل معتبر چاپ کنید

printf “%s یک آدرس ایمیل معتبر است.\n $em

دیگر

#پیام را برای آدرس ایمیل نامعتبر چاپ کنید

printf “%s یک آدرس ایمیل نامعتبر است.\n $em

فی

خروجی زیر نشان می دهد که “admin@tech.com.bd” یک آدرس ایمیل معتبر است زیرا بیانیه “if” در صورت مطابقت با الگوی بیان منظم داده شده صحیح است:

روش درک و اجرای عبارات منظم Bashروش درک و اجرای عبارات منظم Bash

خروجی زیر نشان می دهد که “admin@example.abcde” یک آدرس ایمیل نامعتبر است زیرا بیانیه “if” هنگام مطابقت با الگوی بیان منظم داده شده نادرست است:

روش درک و اجرای عبارات منظم Bashروش درک و اجرای عبارات منظم Bash

Regex برای اعتبارسنجی شماره تلفن

روش اعتبارسنجی شماره تلفن با فرمت “880-XXX-XXX-XXXX” با استفاده از یک عبارت معمولی در اسکریپت زیر نشان داده شده است. در اینجا، “X” هر رقمی را نشان می دهد. شماره تلفن از کاربر گرفته شده است. طبق اسکریپت ، یک شماره تلفن از کاربر گرفته می شود و شماره تلفن معتبر یا نامعتبر است و توسط یک الگوی بیان منظم بررسی می شود.

#!/صندوقچه/bash

#از کاربر شماره تلفن بگیرید

خواندن “شماره تلفن خود را وارد کنید: “ تلفن

#بررسی کنید شماره تلفن معتبر است یا نامعتبر

اگر [[ $phone =~ ^880[09]{3}\-[09]{3}\-[09]{4}$ ]]

سپس

#پیام شماره تلفن معتبر را چاپ کنید

printf “%s یک شماره تلفن معتبر است.\n تلفن $

دیگر

#پیام شماره تلفن نامعتبر را چاپ کنید

printf “%s یک شماره تلفن نامعتبر است.\n تلفن $

فی

خروجی زیر نشان می دهد که “880-169-345-7840” یک شماره تلفن معتبر است زیرا شماره تلفن ورودی با الگوی بیان منظم مطابقت دارد:

روش درک و اجرای عبارات منظم Bashروش درک و اجرای عبارات منظم Bash

خروجی زیر نشان می دهد که “880-176-6789-89” یک شماره تلفن نامعتبر است زیرا شماره تلفن ورودی با الگوی بیان منظم مطابقت ندارد:

روش درک و اجرای عبارات منظم Bashروش درک و اجرای عبارات منظم Bash

برو به بالا

Regex برای اعتبارسنجی نام کاربری و رمز عبور

روش اعتبارسنجی مقادیر نام کاربری و رمز عبور در اسکریپت زیر نشان داده شده است. طبق اسکریپت ، نام کاربری ممکن است حاوی حروف و ارقام کوچک باشد و طول نام کاربری باید 6 تا 10 کاراکتر باشد. رمز عبور ممکن است شامل هر شخصیت الفبایی ، “$” ، “#” ، “@” ، “_” و “-” فقط شخصیت ها باشد و طول رمز عبور باید 5 تا 8 کاراکتر باشد.

#!/صندوقچه/bash

#نام کاربری و رمز عبور را بگیرید

خواندن “نام کاربری را وارد کنید: “ un

خواندن “نام کاربری را وارد کنید: “ pw

#بررسی کنید که آیا نام کاربری و رمز عبور معتبر است یا نامعتبر

اگر [[ $un =~ [a-z0-9]{6،10} && $ pw =~ [a-zA-Z0-9#$@_-]{5,8} ]

سپس

وقتی هر دو مقدار ورودی معتبر هستند، پیامی را چاپ کنید

echo “نام کاربری و رمز عبور معتبر است.”

دیگر

اگر هر یک از مقادیر ورودی نامعتبر است، پیامی را چاپ کنید

echo “نام کاربری یا رمز عبور نامعتبر است.”

فی

خروجی زیر پس از اجرای اسکریپت با مقادیر ورودی “Fahmida19” به عنوان نام کاربری و “سلام@123” به عنوان رمز عبور ظاهر می شود:

روش درک و اجرای عبارات منظم Bashروش درک و اجرای عبارات منظم Bash

برو به بالا

نتیجه

استفاده های مختلف از الگوهای عبارت منظم در این آموزش با استفاده از دستورات و اسکریپت های متعدد Bash نشان داده شده است. روش‌های جستجو، جایگزینی و اعتبارسنجی داده‌ها با استفاده از الگوهای بیان منظم ساده تا پیچیده در اینجا نشان داده شده‌اند.

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

زمان انتشار: 1403-01-06 07:33:04

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

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

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