أمثلة على سلسلة Bash Split String

Bash Split String Examples



نحتاج إلى تقسيم بيانات السلسلة لأغراض مختلفة في البرمجة. تحتوي العديد من لغات البرمجة على وظيفة مضمنة تسمى 'تقسيم' لتقسيم أي بيانات سلسلة إلى أجزاء متعددة. لكن لا توجد وظيفة مضمنة في bash لتقسيم السلسلة. عادة ، يتم استخدام محددات مفردة أو متعددة لتقسيم أي بيانات سلسلة. يتم عرض كيفية تقسيم السلسلة في bash في هذا البرنامج التعليمي باستخدام أمثلة مختلفة.








استخدام متغير $ IFS

يُستخدم متغير shell الخاص $ IFS في bash لتقسيم سلسلة نصية إلى كلمات. المتغير $ IFS يسمى فاصل الحقل الداخلي (IFS) الذي يستخدم لتعيين المحدد المحدد لتقسيم السلسلة. يتم تحديد حدود الكلمات في bash بواسطة $ IFS. المسافة البيضاء هي قيمة المحدد الافتراضية لهذا المتغير. أي قيمة أخرى مثل ' t' ، ' n' ، '-' إلخ. يمكن استخدامها كمحدد. بعد تعيين القيمة إلى متغير $ IFS ، يمكن قراءة قيمة السلسلة بخيارين. هذان هما '-r' و '-a'. يستخدم الخيار '-r' لقراءة الشرطة المائلة للخلف () كحرف بدلاً من حرف الهروب ويتم استخدام الخيار '-a' لتخزين الكلمات المقسمة إلى متغير مصفوفة. يمكن تقسيم السلسلة دون استخدام متغير $ IFS في bash. طرق مختلفة لتقسيم بيانات السلسلة (مع $ IFS أو بدون $ IFS) موضحة في الأمثلة التالية.



مثال 1: انقسام السلسلة على أساس

يتم قسمة قيمة السلسلة على مسافة بيضاء بشكل افتراضي. قم بإنشاء ملف باسم 'split1.sh' وأضف الكود التالي. هنا ، يتم استخدام متغير نص $ لتعيين قيمة سلسلة. يتم استخدام متغير shell $ IFS لتعيين الحرف الذي سيتم استخدامه لتقسيم بيانات السلسلة. يتم استخدام المسافة في هذا البرنامج النصي كفاصل. يستخدم الخيار '-a' مع أمر القراءة لتخزين البيانات المقسمة إلى متغير مصفوفة يسمى $ strarr. حلقة 'for' تستخدم لقراءة كل عنصر من المصفوفة ، $ strarr.



Split1.sh





#!/bin/bash

# تحديد قيمة السلسلة
نص='مرحبًا بك في LinuxHint'

# ضع مساحة كمحدد
IFS='

# اقرأ الكلمات المقسمة إلى مصفوفة بناءً على محدد المسافة
اقرأ -إلىسترار<<< 'نص $'

# احسب مجموع الكلمات
رما - طرد - قذف 'يوجد$ {# strarr [*]}كلمات في النص.

# اطبع كل قيمة من قيمة المصفوفة باستخدام الحلقة
لساعةفي '$ {strarr [@]}'؛
فعل
printf 'ساعاتن'
انتهى

انتاج:

قم بتشغيل البرنامج النصي.



$سحقSplit1.sh

سيظهر الإخراج التالي بعد تشغيل البرنامج النصي.

مثال 2: انقسام السلسلة بناءً على حرف معين

يمكن استخدام أي حرف محدد كفاصل لتقسيم قيمة السلسلة. قم بإنشاء ملف باسم Split2.sh وأضف الكود التالي. هنا ، يتم أخذ اسم الكتاب واسم المؤلف وقيمة السعر عن طريق إضافة فاصلة (،) كسلسلة إدخال. بعد ذلك ، يتم تقسيم قيمة السلسلة وتخزينها في مصفوفة بناءً على قيمة متغير shell $ IFS. تتم طباعة كل قيمة من عناصر المصفوفة بواسطة قيمة الفهرس.

Split2.sh

#!/bin/bash

# اقرأ قيمة السلسلة
رما - طرد - قذف أدخل اسم الكتاب واسم المؤلف والسعر بفصل الفاصلة. '
اقرأنص

# تعيين الفاصلة كمحدد
IFS='،'

# اقرأ الكلمات المقسمة إلى مصفوفة بناءً على محدد الفاصلة
اقرأ -إلىسترار<<< 'نص $'

# طباعة الكلمات المقسمة
رما - طرد - قذف 'اسم الكتاب :$ {strarr [0]}'
رما - طرد - قذف 'اسم المؤلف :$ {strarr [1]}'
رما - طرد - قذف 'سعر :$ {strarr [2]}'

انتاج:

قم بتشغيل البرنامج النصي.

$سحقSplit2.sh

سيظهر الإخراج التالي بعد تشغيل البرنامج النصي.

مثال 3: انقسام السلسلة بدون $ IFS المتغير

يوضح هذا المثال كيف يمكن تقسيم قيمة السلسلة دون استخدام $ IFS في bash. أنشئ ملفًا باسم ' Split3.sh ' وأضف الكود التالي. وفقًا للنص ، قيمة نصية مع النقطتين (:) يجب أن تأخذ كمدخلات للتقسيم. هنا ، يتم استخدام الأمر 'readarray' مع الخيار -d لتقسيم بيانات السلسلة. يستخدم الخيار '-d' لتعريف الحرف الفاصل في الأمر مثل $ IFS. بعد ذلك ، يتم استخدام حلقة 'for' لطباعة عناصر المصفوفة.

Split3.sh

#!/bin/bash

# اقرأ السلسلة الرئيسية
رما - طرد - قذف 'أدخل السلسلة مع النقطتين (:) للتقسيم'
اقرأرئيسي

# قسّم السلسلة بناءً على المحدد ، ':'
readarray:-tسترار<<< '$ mainstr'
printf 'ن'

# طباعة كل قيمة من قيمة المصفوفة باستخدام الحلقة
ل (( ن=0؛ ن< $ {# strarr [*]}؛ n ++))
فعل
رما - طرد - قذف '$ {strarr [n]}'
انتهى

انتاج:

قم بتشغيل البرنامج النصي.

$سحقSplit3.sh

سيظهر الإخراج التالي بعد تشغيل البرنامج النصي.

مثال 4: انقسام السلسلة بمحدد متعدد الأحرف

يتم تقسيم قيمة السلسلة بواسطة محدد حرف واحد في جميع الأمثلة السابقة. يوضح هذا المثال كيف يمكنك تقسيم السلسلة باستخدام محدد متعدد الأحرف. قم بإنشاء ملف باسم تقسيم الأوقات 4.sh وأضف الكود التالي. هنا ، يتم استخدام متغير نص $ لتخزين بيانات سلسلة. يتم استخدام متغير محدد $ لتعيين بيانات متعددة الأحرف تستخدم كمحدد في العبارات التالية. يتم استخدام متغير $ myarray لتخزين كل بيانات مقسمة كعنصر مصفوفة. أخيرًا ، تتم طباعة جميع البيانات المقسمة باستخدام حلقة 'for'.

Split4.sh

#!/bin/bash

# حدد السلسلة المراد تقسيمها
نص='LearnHTMLlearnPHPlearnMySQLlearnJavascript'

# تعريف محدد متعدد الأحرف
محدد='يتعلم'
#Concatenate المحدد مع السلسلة الرئيسية
سلسلة=نص $محدد $

# تقسيم النص بناءً على المحدد
ميراي=()
في حين [[ سلسلة $ ]]؛فعل
myarray + =( '$ {string ٪٪ '$ delimiter' *}' )
سلسلة=$ {string # * '$ delimiter'}
انتهى

# اطبع الكلمات بعد الانقسام
لالقيمةفي $ {myarray [@]}
فعل
رما - طرد - قذف 'قيمة دولار'
انتهى
printf 'ن'

انتاج:

قم بتشغيل البرنامج النصي.

$سحقSplit4.sh

سيظهر الإخراج التالي بعد تشغيل البرنامج النصي.

استنتاج:

تحتاج بيانات السلسلة إلى تقسيم لأغراض البرمجة المختلفة. يتم عرض طرق مختلفة لتقسيم بيانات السلسلة في bash في هذا البرنامج التعليمي. آمل ، بعد ممارسة الأمثلة المذكورة أعلاه ، سيتمكن القراء من تقسيم أي بيانات سلسلة بناءً على متطلباتهم.

لمزيد من المعلومات شاهد الفيديو !