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

سرور مجازی NVMe

نمونه های رشته تقسیم Bash

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


[*][*]

ما باید داده های رشته را برای اهداف مختلف در برنامه نویسی تقسیم کنیم. بسیاری از زبان های برنامه نویسی دارای یک تابع داخلی به نام ‘split’ برای تقسیم هر داده رشته ای به چند قسمت هستند. اما هیچ عملکرد داخلی وجود ندارد bash برای تقسیم رشته به طور معمول، جداکننده های منفرد یا چندگانه برای تقسیم هر داده رشته ای استفاده می شود. چگونه می توانید رشته را تقسیم کنید bash در این آموزش با استفاده از مثال های مختلف نشان داده شده است.





[*]

استفاده از متغیر $IFS

متغیر پوسته ویژه $IFS در آن استفاده می شود bash برای تقسیم یک رشته به کلمات متغیر $IFS به نام Internal Field Separator (IFS) نامیده می شود که برای اختصاص جداکننده خاص برای تقسیم رشته استفاده می شود. مرزهای کلمه در مشخص می شود bash توسط $IFS. فضای سفید مقدار جداکننده پیش فرض برای این متغیر است. هر مقدار دیگری مانند ‘\t’، ‘\n’، ‘-‘ و غیره می تواند به عنوان جداکننده استفاده شود. پس از تخصیص مقدار به متغیر $IFS، مقدار رشته را می توان با دو گزینه خواند. اینها ‘-r’ و ‘-a’ هستند. گزینه ‘-r’ برای خواندن بک اسلش (\) به عنوان یک کاراکتر به جای کاراکتر فرار و گزینه ‘-a’ برای ذخیره کلمات تقسیم شده در یک متغیر آرایه استفاده می شود. رشته را می توان بدون استفاده از متغیر $IFS در آن تقسیم کرد bash. روش های مختلف برای تقسیم داده های رشته ای (با $IFS یا بدون $IFS) در مثال های زیر نشان داده شده است.

مثال-1: تقسیم رشته بر اساس روی فضا

مقدار رشته به طور پیش فرض بر فضای سفید تقسیم می شود. یک فایل با نام ‘split1.sh’ ایجاد کنید و کد زیر را اضافه کنید. در اینجا از متغیر $text برای اختصاص یک مقدار رشته استفاده می شود. متغیر پوسته $IFS برای تخصیص کاراکتری که برای تقسیم داده های رشته استفاده می شود استفاده می شود. از Space در این اسکریپت به عنوان جداکننده استفاده شده است. گزینه ‘-a’ با دستور خواندن برای ذخیره داده های تقسیم شده در یک متغیر آرایه به نام $strarr استفاده می شود. حلقه ‘for’ برای خواندن هر عنصر آرایه، $strarr استفاده می شود.

split1.sh

#!/صندوقچه/bash[*]
[*]
#مقدار رشته را تعریف کنید[*]
متن=“به LinuxHint خوش آمدید”[*]
[*]
# فضا را به عنوان جداکننده تنظیم کنید[*]
IFS=“”[*]
[*]
#کلمات تقسیم شده را در یک آرایه بر اساس بخوانید روی جدا کننده فضا[*]
خواندن strarr <<< $text[*]
[*]
#کل کلمات را بشمار[*]
echo “وجود دارد ${#strarr[*]} کلمات در متن.”[*]
[*]
# هر مقدار آرایه را با استفاده از حلقه چاپ کنید[*]
برای val که در ${strarr[@]};[*]
انجام دادن[*]

پیشنهاد می‌کنیم بخوانید:  در Bash، اگر دستوری با شکست مواجه شد، دستورات دیگری را اجرا کنید

printf $val\n[*]
انجام شده

خروجی:

اسکریپت را اجرا کنید.

$ bash split1.sh

پس از اجرای اسکریپت خروجی زیر ظاهر می شود.

مثال-2: تقسیم رشته بر اساس روی یک شخصیت خاص

هر کاراکتر خاصی را می توان به عنوان جداکننده برای تقسیم مقدار رشته استفاده کرد. یک فایل به نام ایجاد کنید split2.sh و کد زیر را اضافه کنید در اینجا، نام کتاب، نام نویسنده و ارزش قیمت با افزودن کاما(،) به عنوان یک رشته ورودی گرفته می شود. سپس، مقدار رشته تقسیم شده و در یک آرایه بر اساس مقدار متغیر پوسته، $IFS، ذخیره می‌شود. هر مقدار از عناصر آرایه با مقدار شاخص چاپ می شود.

split2.sh

#!/صندوقچه/bash[*]
[*]
#مقدار رشته را بخوانید[*]
echo “نام کتاب، نام نویسنده و قیمت را با جدا کردن کاما وارد کنید.”[*]
خواندن متن[*]
[*]
# کاما را به عنوان جداکننده تنظیم کنید[*]
IFS=“،”[*]
[*]
#کلمات تقسیم شده را در یک آرایه بر اساس بخوانید روی جداکننده کاما[*]
خواندن strarr <<< $text[*]
[*]
#کلمات تقسیم شده را چاپ کنید[*]
echo “نام کتاب: ${strarr[0]}[*]
echo “نام نویسنده : ${strarr[1]}[*]
echo “قیمت: ${strarr[2]}

خروجی:

اسکریپت را اجرا کنید.

$ bash split2.sh

پس از اجرای اسکریپت خروجی زیر ظاهر می شود.

نمونه های رشته تقسیم Bash

مثال-3: رشته را بدون متغیر $IFS تقسیم کنید

این مثال نشان می دهد که چگونه می توان مقدار رشته را بدون استفاده از $IFS در تقسیم کرد bash. یک فایل با نام ایجاد کنیدsplit3.sh’ و کد زیر را اضافه کنید با توجه به اسکریپت، یک مقدار متن با دو نقطه(:) باید به عنوان ورودی برای تقسیم کردن. در اینجا، دستور ‘readarray’ با گزینه -d برای تقسیم داده های رشته استفاده می شود. گزینه ‘-d’ برای تعریف کاراکتر جداکننده در دستور مانند $IFS استفاده می شود. در مرحله بعد، حلقه “for” استفاده می شود print عناصر آرایه

split3.sh

#!/صندوقچه/bash[*]
[*]
#رشته اصلی را بخوانید[*]
echo “رشته را با دو نقطه (:) وارد کنید تا تقسیم شود”[*]
خواندن mainstr[*]
[*]
#رشته را بر اساس تقسیم کنید روی جداکننده، ‘:’[*]

پیشنهاد می‌کنیم بخوانید:  چگونه عبارت Bash If-Else را در یک خط بنویسیم

آرایه خواندنی : -t strarr <<< $mainstr[*]
printf \n[*]
[*]
# هر مقدار آرایه را با استفاده از حلقه چاپ کنید[*]
برای (( n=0; n < ${#strarr[*]}; n++))[*]
انجام دادن[*]

echo ${strarr[n]}[*]
انجام شده

خروجی:

اسکریپت را اجرا کنید.

$ bash split3.sh

پس از اجرای اسکریپت خروجی زیر ظاهر می شود.

نمونه های رشته تقسیم Bashنمونه های رشته تقسیم Bash

مثال-4: رشته را با جداکننده چند کاراکتری تقسیم کنید

مقدار رشته توسط یک جداکننده کاراکتر در تمام مثال‌های قبلی تقسیم می‌شود. چگونه می توانید رشته را با استفاده از جداکننده چند کاراکتری تقسیم کنید در این مثال نشان داده شده است. یک فایل به نام ایجاد کنید ‘split4.sh’ و کد زیر را اضافه کنید در اینجا از متغیر $text برای ذخیره داده های رشته ای استفاده می شود. متغیر $delimiter برای تخصیص یک داده چند کاراکتری استفاده می شود که به عنوان جداکننده در عبارات بعدی استفاده می شود. متغیر myarray $ برای ذخیره هر داده تقسیم شده به عنوان یک عنصر آرایه استفاده می شود. در نهایت، تمام داده های تقسیم شده با استفاده از حلقه “for” چاپ می شوند.

split4.sh

#!/صندوقچه/bash[*]
[*]
#رشته را برای تقسیم تعریف کنید[*]
متن=“learnHTMLlearnPHPlearnMySQLlearnJavascript”[*]
[*]
#تعریف جداکننده چند کاراکتری[*]
حائل، جداکننده=“فرا گرفتن”[*]
# جداکننده را با رشته اصلی به هم پیوند دهید[*]
رشته=$text$delimiter[*]
[*]
#تقسیم متن بر اساس روی تعیین کننده[*]
مای آرای=()[*]
در حالی که [[ $string ]]; انجام دادن[*]

myarray+=( ${string%%”$delimiter”*} )[*]

رشته=${string#*”$delimiter”}[*]
انجام شده[*]
[*]
#کلمات بعد از تقسیم را چاپ کنید[*]
برای ارزش که در ${myarray[@]}[*]
انجام دادن[*]

echo -n ارزش دلار[*]
انجام شده[*]
printf \n

خروجی:

اسکریپت را اجرا کنید.

$ bash split4.sh

پس از اجرای اسکریپت خروجی زیر ظاهر می شود.

نمونه های رشته تقسیم Bashنمونه های رشته تقسیم Bash

نتیجه:

داده های رشته ای باید برای اهداف برنامه نویسی مختلف تقسیم شوند. روش های مختلف برای تقسیم داده های رشته ای bash در این آموزش نشان داده شده است. امیدواریم پس از تمرین مثال‌های بالا، خوانندگان بتوانند داده‌های رشته‌ای را بر اساس تقسیم کنند روی نیاز آنها

برای اطلاعات بیشتر تماشا کنید ویدیو!

[*]

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

[*]زمان انتشار: 1402-12-31 20:43:04

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

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

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