از طریق منوی جستجو مطلب مورد نظر خود در وبلاگ را به سرعت پیدا کنید
نمونه های رشته تقسیم Bash
سرفصلهای مطلب
[*][*]
ما باید داده های رشته را برای اهداف مختلف در برنامه نویسی تقسیم کنیم. بسیاری از زبان های برنامه نویسی دارای یک تابع داخلی به نام ‘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
[*]
#مقدار رشته را تعریف کنید[*]
متن=“به LinuxHint خوش آمدید”[*]
[*]
# فضا را به عنوان جداکننده تنظیم کنید[*]
IFS=“”[*]
[*]
#کلمات تقسیم شده را در یک آرایه بر اساس بخوانید روی جدا کننده فضا[*]
خواندن -آ strarr <<< “$text“[*]
[*]
#کل کلمات را بشمار[*]
echo “وجود دارد ${#strarr[*]} کلمات در متن.”[*]
[*]
# هر مقدار آرایه را با استفاده از حلقه چاپ کنید[*]
برای val که در “${strarr[@]}“;[*]
انجام دادن[*]
printf “$val\n“[*]
انجام شده
خروجی:
اسکریپت را اجرا کنید.
پس از اجرای اسکریپت خروجی زیر ظاهر می شود.
مثال-2: تقسیم رشته بر اساس روی یک شخصیت خاص
هر کاراکتر خاصی را می توان به عنوان جداکننده برای تقسیم مقدار رشته استفاده کرد. یک فایل به نام ایجاد کنید split2.sh و کد زیر را اضافه کنید در اینجا، نام کتاب، نام نویسنده و ارزش قیمت با افزودن کاما(،) به عنوان یک رشته ورودی گرفته می شود. سپس، مقدار رشته تقسیم شده و در یک آرایه بر اساس مقدار متغیر پوسته، $IFS، ذخیره میشود. هر مقدار از عناصر آرایه با مقدار شاخص چاپ می شود.
split2.sh
[*]
#مقدار رشته را بخوانید[*]
echo “نام کتاب، نام نویسنده و قیمت را با جدا کردن کاما وارد کنید.”[*]
خواندن متن[*]
[*]
# کاما را به عنوان جداکننده تنظیم کنید[*]
IFS=“،”[*]
[*]
#کلمات تقسیم شده را در یک آرایه بر اساس بخوانید روی جداکننده کاما[*]
خواندن -آ strarr <<< “$text“[*]
[*]
#کلمات تقسیم شده را چاپ کنید[*]
echo “نام کتاب: ${strarr[0]}“[*]
echo “نام نویسنده : ${strarr[1]}“[*]
echo “قیمت: ${strarr[2]}“
خروجی:
اسکریپت را اجرا کنید.
پس از اجرای اسکریپت خروجی زیر ظاهر می شود.
مثال-3: رشته را بدون متغیر $IFS تقسیم کنید
این مثال نشان می دهد که چگونه می توان مقدار رشته را بدون استفاده از $IFS در تقسیم کرد bash. یک فایل با نام ایجاد کنیدsplit3.sh’ و کد زیر را اضافه کنید با توجه به اسکریپت، یک مقدار متن با دو نقطه(:) باید به عنوان ورودی برای تقسیم کردن. در اینجا، دستور ‘readarray’ با گزینه -d برای تقسیم داده های رشته استفاده می شود. گزینه ‘-d’ برای تعریف کاراکتر جداکننده در دستور مانند $IFS استفاده می شود. در مرحله بعد، حلقه “for” استفاده می شود print عناصر آرایه
split3.sh
[*]
#رشته اصلی را بخوانید[*]
echo “رشته را با دو نقطه (:) وارد کنید تا تقسیم شود”[*]
خواندن mainstr[*]
[*]
#رشته را بر اساس تقسیم کنید روی جداکننده، ‘:’[*]
آرایه خواندنی -د : -t strarr <<< “$mainstr“[*]
printf “\n“[*]
[*]
# هر مقدار آرایه را با استفاده از حلقه چاپ کنید[*]
برای (( n=0; n < ${#strarr[*]}; n++))[*]
انجام دادن[*]
echo “${strarr[n]}“[*]
انجام شده
خروجی:
اسکریپت را اجرا کنید.
پس از اجرای اسکریپت خروجی زیر ظاهر می شود.
مثال-4: رشته را با جداکننده چند کاراکتری تقسیم کنید
مقدار رشته توسط یک جداکننده کاراکتر در تمام مثالهای قبلی تقسیم میشود. چگونه می توانید رشته را با استفاده از جداکننده چند کاراکتری تقسیم کنید در این مثال نشان داده شده است. یک فایل به نام ایجاد کنید ‘split4.sh’ و کد زیر را اضافه کنید در اینجا از متغیر $text برای ذخیره داده های رشته ای استفاده می شود. متغیر $delimiter برای تخصیص یک داده چند کاراکتری استفاده می شود که به عنوان جداکننده در عبارات بعدی استفاده می شود. متغیر myarray $ برای ذخیره هر داده تقسیم شده به عنوان یک عنصر آرایه استفاده می شود. در نهایت، تمام داده های تقسیم شده با استفاده از حلقه “for” چاپ می شوند.
split4.sh
[*]
#رشته را برای تقسیم تعریف کنید[*]
متن=“learnHTMLlearnPHPlearnMySQLlearnJavascript”[*]
[*]
#تعریف جداکننده چند کاراکتری[*]
حائل، جداکننده=“فرا گرفتن”[*]
# جداکننده را با رشته اصلی به هم پیوند دهید[*]
رشته=$text$delimiter[*]
[*]
#تقسیم متن بر اساس روی تعیین کننده[*]
مای آرای=()[*]
در حالی که [[ $string ]]; انجام دادن[*]
myarray+=( “${string%%”$delimiter”*}“ )[*]
رشته=${string#*”$delimiter”}[*]
انجام شده[*]
[*]
#کلمات بعد از تقسیم را چاپ کنید[*]
برای ارزش که در ${myarray[@]}[*]
انجام دادن[*]
echo -n “ارزش دلار “[*]
انجام شده[*]
printf “\n“
خروجی:
اسکریپت را اجرا کنید.
پس از اجرای اسکریپت خروجی زیر ظاهر می شود.
نتیجه:
داده های رشته ای باید برای اهداف برنامه نویسی مختلف تقسیم شوند. روش های مختلف برای تقسیم داده های رشته ای bash در این آموزش نشان داده شده است. امیدواریم پس از تمرین مثالهای بالا، خوانندگان بتوانند دادههای رشتهای را بر اساس تقسیم کنند روی نیاز آنها
برای اطلاعات بیشتر تماشا کنید ویدیو!
[*]
لطفا در صورت وجود مشکل در متن یا مفهوم نبودن توضیحات، از طریق دکمه گزارش نوشتار یا درج نظر روی این مطلب ما را از جزییات مشکل مشاهده شده مطلع کنید تا به آن رسیدگی کنیم
[*]زمان انتشار: 1402-12-31 20:43:04