كسر التلاعب بالسلسلة في باش
عند العمل باستخدام برامج شل النصية، تتمثل المهمة الشائعة في تقسيم سلسلة بناءً على محدد. على سبيل المثال، ضع في اعتبارك سلسلة تحتوي على عناوين بريد إلكتروني مفصولة بفواصل منقوطة. إذا كنت بحاجة إلى معالجة كل بريد إلكتروني على حدة، يصبح فهم كيفية تقسيم هذه السلسلة أمرًا ضروريًا. سترشدك هذه المقالة عبر طرق مختلفة لتحقيق ذلك في Bash.
سنستكشف حلولاً مثل استخدام الأمر `tr` ومعالجة فاصل الحقول الداخلي (IFS). في النهاية، ستتمكن من التعامل مع تقسيم السلسلة بكفاءة وإعادة تعيين IFS إلى قيمته الافتراضية. دعنا نتعمق في مهام البرمجة النصية لـ Bash ونبسطها!
يأمر | وصف |
---|---|
tr | يترجم أو يحذف الأحرف. تُستخدم هنا لاستبدال الفاصلة المنقوطة بحرف السطر الجديد لتقسيم السلسلة. |
IFS | فاصل الحقول الداخلي، يستخدم لتقسيم السلاسل بناءً على محدد محدد في برامج Bash النصية. |
read -r -a | يقرأ سطرًا من الإدخال ويقسمه إلى مصفوفة. يمنع الخيار -r تفسير الخطوط المائلة العكسية على أنها أحرف هروب. |
echo | طباعة النص إلى الإخراج القياسي. يستخدم لعرض عناصر السلسلة المقسمة. |
split | دالة Perl تقوم بتقسيم سلسلة إلى قائمة سلاسل بناءً على محدد محدد. |
foreach | بنية حلقة Perl التي تتكرر عبر قائمة من القيم. |
فهم تقنيات تقسيم سلسلة باش
يوضح البرنامج النصي Bash الأول كيفية تقسيم سلسلة باستخدام ملف يأمر. هنا، نحدد سلسلة والاستخدام بالتزامن مع tr لترجمة محدد الفاصلة المنقوطة إلى حرف السطر الجديد. يؤدي هذا إلى تقسيم السلسلة بشكل فعال إلى خطوط فردية. ال حلقة ثم تتكرر فوق كل سطر، وتطبع العناوين بين قوسين مربعين. هذه الطريقة واضحة ومباشرة وتستفيد من إمكانات معالجة النصوص القوية لأوامر Unix لمعالجة السلاسل.
هناك طريقة أخرى تتضمن ضبط . عن طريق الإعداد مؤقتا إلى فاصلة منقوطة، يمكننا تقسيم السلسلة إلى صفيف. نحن نحفظ الأصل ل OIFS قبل تعديله، لضمان إمكانية استعادته لاحقًا. ال يقرأ الأمر سلسلة الإدخال في صفيف يسمى وتقسيمها على أساس المعدل . بعد المعالجة، الأصلي IFS تمت استعادته. يوفر هذا الأسلوب طريقة أكثر برمجة للتعامل مع تقسيم السلسلة في Bash، مما يسمح لنا باستخدام المصفوفات لمزيد من المعالجة.
استخدام Bash لتقسيم السلاسل على محدد
سكريبت باش
#!/usr/bin/env bash
# Input string
IN="bla@some.com;john@home.com"
# Split string using 'tr' and iterate
mails=$(echo $IN | tr ";" "\n")
for addr in $mails; do
echo "> [$addr]"
done
# Output:
# > [bla@some.com]
# > [john@home.com]
تقسيم سلسلة في Bash باستخدام IFS
سكريبت باش
#!/usr/bin/env bash
# Input string
IN="bla@some.com;john@home.com"
# Save the original IFS
OIFS=$IFS
# Set IFS to semicolon
IFS=';'
# Split string into an array
read -r -a mails2 <<< "$IN"
# Restore the original IFS
IFS=$OIFS
# Iterate over the array
for x in "${mails2[@]}"; do
echo "> [$x]"
done
# Output:
# > [bla@some.com]
# > [john@home.com]
استخدام بايثون لتقسيم السلسلة
برنامج بايثون النصي
#!/usr/bin/env python3
# Input string
IN = "bla@some.com;john@home.com"
# Split string by semicolon
mails = IN.split(';')
# Iterate and print each element
for addr in mails:
print(f"> [{addr}]")
# Output:
# > [bla@some.com]
# > [john@home.com]
استخدام بيرل لتقسيم سلسلة
بيرل النصي
#!/usr/bin/env perl
use strict;
use warnings;
# Input string
my $IN = "bla@some.com;john@home.com";
# Split string by semicolon
my @mails = split(';', $IN);
# Iterate and print each element
foreach my $addr (@mails) {
print "> [$addr]\n";
}
# Output:
# > [bla@some.com]
# > [john@home.com]
تقنيات تقسيم السلسلة المتقدمة في Bash
هناك طريقة أخرى قوية لتقسيم السلاسل في Bash تتضمن استخدام يأمر. هي أداة مساعدة لسطر الأوامر متعددة الاستخدامات مصممة لمسح الأنماط ومعالجتها. يمكن أن يكون مفيدًا بشكل خاص لتقسيم السلاسل لأنه يسمح لنا بتحديد فواصل الحقول المخصصة. على سبيل المثال، يمكننا استخدام لتقسيم سلسلة بناءً على الفاصلة المنقوطة وطباعة المكونات الفردية. تتميز هذه الطريقة بالمرونة العالية ويمكنها التعامل مع مهام معالجة السلاسل الأكثر تعقيدًا، مما يجعلها أداة قيمة في مجموعة أدوات مبرمجي Bash.
بالإضافة إلى ذلك، يمكن استخدام الأمر لتقسيم السلاسل بناءً على المحددات. ال يُستخدم الأمر عادةً لاستخراج المقاطع من كل سطر من بيانات الإدخال. من خلال تحديد محدد مع الخيار واختيار الحقول مع -f الخيار، يمكننا تقسيم واستخراج أجزاء من السلسلة بكفاءة. على سبيل المثال، باستخدام سيتم استخراج عنوان البريد الإلكتروني الأول من سلسلة الإدخال. توفر هذه الأساليب المتقدمة المزيد من التحكم والدقة لمهام معالجة السلسلة في Bash.
- كيف أقوم بتقسيم سلسلة على محدد في باش؟
- يمكنك استخدام ال متغير أو أوامر مثل , ، و cut لتقسيم السلاسل على محدد.
- ما هو متغير في باش؟
- ال (فاصل الحقول الداخلي) هو متغير خاص يحدد الحرف (الحروف) المستخدم لتقسيم نص الإدخال إلى كلمات أو رموز مميزة.
- كيف يمكنني إعادة تعيين المتغير إلى قيمته الافتراضية؟
- احفظ الأصل القيمة قبل تغييرها واستعادتها بعد المعالجة: .
- ماذا يكون ال الأمر تفعل في تقسيم السلسلة؟
- ال الأمر يترجم أو يحذف الأحرف. يمكنه استبدال المحددات بأسطر جديدة لتقسيم السلسلة: .
- هل يمكنني تقسيم سلسلة إلى مصفوفة باستخدام Bash؟
- نعم، عن طريق تغيير متغير واستخدام ، يمكنك تقسيم السلسلة إلى مصفوفة:
- ما هو الأمر يستخدم ل؟
- هي أداة مساعدة لسطر الأوامر لمسح الأنماط ومعالجتها. يمكنه تقسيم السلاسل عن طريق تحديد فواصل الحقول المخصصة.
- كيف يمكن لل عمل الأمر؟
- ال يقوم الأمر باستخراج الأقسام من كل سطر من الإدخال. يمكنه تقسيم السلاسل عن طريق تحديد محدد واختيار الحقول: .
- لماذا يستخدم مفيد في تقسيم السلسلة؟
- استخدام يتيح لك تحديد محددات مخصصة لتقسيم السلاسل، مما يجعلها متعددة الاستخدامات لتنسيقات الإدخال المختلفة.
- هل من الممكن تقسيم سلسلة بمحددات متعددة في Bash؟
- نعم، يمكنك استخدام مزيج من و للتعامل مع محددات متعددة.
- هل بإمكاني استخدم لتقسيم السلسلة في باش؟
- بينما هو في المقام الأول محرر دفق، ويمكن دمجه مع أوامر أخرى مثل لتقسيم السلاسل بشكل غير مباشر.
يمكن أن يؤدي إتقان معالجة السلسلة في Bash إلى تحسين كفاءة البرمجة النصية لديك بشكل كبير. سواء باستخدام للمحددات البسيطة أو الأدوات الأكثر تقدمًا مثل و هذه التقنيات ضرورية لبرمجة Bash الفعالة. تذكر دائمًا استعادة الأصل IFS لتجنب السلوك غير المتوقع في البرامج النصية الخاصة بك. باستخدام هذه الطرق، يمكنك التعامل مع مجموعة واسعة من مهام معالجة السلسلة في برامج Bash النصية الخاصة بك.