التحقق من وجود سلاسل فرعية في البرامج النصية لباش

التحقق من وجود سلاسل فرعية في البرامج النصية لباش
Bash

مقدمة لاحتواء السلسلة في باش

عند العمل باستخدام برامج Bash النصية، من الشائع أن تواجه مواقف تحتاج فيها إلى التحقق مما إذا كانت السلسلة تحتوي على سلسلة فرعية معينة. تعد هذه مهمة أساسية في العديد من سيناريوهات البرمجة النصية، مثل تحليل بيانات الإدخال أو التحقق من صحة السلاسل أو تصفية المحتوى بناءً على معايير معينة.

في هذه المقالة، سنستكشف طرقًا مختلفة لتحقيق ذلك في Bash، بما في ذلك استخدام العبارات الشرطية والأوامر مثل `echo` و`grep`. سنناقش أيضًا الأساليب الأكثر كفاءة وقابلية للقراءة لجعل البرامج النصية الخاصة بك أكثر قابلية للصيانة وأقل عرضة للأخطاء.

يأمر وصف
[[ ]] تعبير شرطي يستخدم لاختبار السلاسل والشروط الأخرى في Bash.
* حرف بدل يُستخدم لتمثيل أي عدد من الأحرف في تطابق نمط السلسلة.
echo أمر يستخدم لعرض سطر من النص أو سلسلة تم تمريرها كوسيطة.
grep أداة مساعدة لسطر الأوامر للبحث في بيانات النص العادي عن الأسطر المطابقة لتعبير عادي.
-q خيار لـ grep يمنع الإخراج العادي ويعيد حالة الخروج فقط.
case عبارة شرطية تستخدم لمطابقة الأنماط في Bash.
;; محدد يستخدم في عبارات الحالة للفصل بين إجراءات الأنماط المختلفة.

فهم التحقق من السلسلة الفرعية في باش

في النص الأول نستخدم conditional statements للتحقق مما إذا كانت السلسلة تحتوي على سلسلة فرعية محددة. نحدد سلسلة رئيسية وسلسلة فرعية، ثم نستخدم [[ ]] build، والذي يسمح بإجراء مقارنات سلسلة متقدمة. داخل الأقواس نستخدم * حرف البدل لتمثيل أي عدد من الأحرف قبل السلسلة الفرعية وبعدها. إذا كان الشرط صحيحا، يطبع البرنامج النصي "إنه هناك!"؛ وإلا فإنه يطبع "إنه ليس هناك!". هذه الطريقة فعالة وتستفيد من إمكانيات Bash المضمنة لمطابقة الأنماط.

يستخدم السيناريو الثاني echo و grep الأوامر لتحقيق نفس النتيجة. نحدد مرة أخرى سلسلة رئيسية وسلسلة فرعية، ثم نستخدمها echo لإخراج السلسلة الرئيسية وتوجيهها إلى grep باستخدام -q خيار لقمع الإخراج العادي. Grep يبحث عن السلسلة الفرعية داخل السلسلة الرئيسية. إذا تم العثور على السلسلة الفرعية، فسيطبع البرنامج النصي "It's There!"؛ إذا لم يكن الأمر كذلك، فإنه يطبع "إنه ليس هناك!". يعمل هذا الأسلوب على الاستفادة من الإمكانات القوية للبحث عن النص grepمما يجعله مناسبًا للنصوص البرمجية التي تحتاج إلى مطابقة أنماط النص المعقدة.

استكشاف عمليات سلسلة Bash المتقدمة

يستخدم البرنامج النصي الثالث أ case بيان للتحقق من وجود سلسلة فرعية. بعد تحديد السلسلة الرئيسية والسلسلة الفرعية، فإن case يطابق البيان السلسلة الرئيسية مقابل أنماط مختلفة. إذا كانت السلسلة الفرعية موجودة، فسيتم تنفيذ الإجراء المقابل، وطباعة "إنها هناك!". إذا لم يتم العثور على السلسلة الفرعية، فسيقوم الإجراء الافتراضي بطباعة "It's not There!". تعتبر هذه الطريقة مفيدة بشكل خاص عندما تكون هناك أنماط متعددة للتحقق منها، مثل case يمكن أن تتعامل العبارة مع منطق التفرع المعقد بشكل أكثر نظافة من المنطق المتعدد if-else صياغات.

بشكل عام، توفر كل طريقة من هذه الطرق طريقة لتحديد ما إذا كانت السلسلة تحتوي على سلسلة فرعية محددة في Bash. يعتمد اختيار الطريقة على مدى تعقيد مطابقة السلسلة المطلوبة والمتطلبات المحددة للبرنامج النصي. استخدام [[ ]] مع أحرف البدل واضحة وفعالة لعمليات التحقق البسيطة، أثناء الدمج echo و grep يوفر مطابقة أنماط أكثر قوة. ال case من ناحية أخرى، يعد البيان مثاليًا للتعامل مع شروط المطابقة المتعددة بطريقة منظمة.

استخدام العبارات الشرطية للتحقق من وجود سلاسل فرعية في Bash

طريقة البرمجة باش

#!/bin/bash
# Define the main string
string="My string"
# Define the substring to search for
substring="foo"
# Check if the substring is present in the main string
if [[ "$string" == *"$substring"* ]]; then
  echo "It's there!"
else
  echo "It's not there!"
fi

استخدام Echo وGrep للكشف عن السلاسل الفرعية في Bash

الجمع بين أوامر Echo وGrep

#!/bin/bash
# Define the main string
string="My string"
# Define the substring to search for
substring="foo"
# Use echo and grep to check if the substring is present
if echo "$string" | grep -q "$substring"; then
  echo "It's there!"
else
  echo "It's not there!"
fi

استخدام بيانات الحالة للكشف عن السلسلة الفرعية في Bash

برمجة باش مع بيانات الحالة

#!/bin/bash
# Define the main string
string="My string"
# Define the substring to search for
substring="foo"
# Use case statement to check for the substring
case "$string" in
  *"$substring"*)
    echo "It's there!"
    ;;
  *)
    echo "It's not there!"
    ;;
esac

طرق متقدمة لاحتواء السلسلة في Bash

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

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

الأسئلة المتداولة حول احتواء السلسلة في Bash

  1. كيف يمكنني التحقق مما إذا كانت السلسلة تحتوي على سلسلة فرعية باستخدام awk؟
  2. للتحقق مما إذا كانت السلسلة تحتوي على سلسلة فرعية باستخدام awk، يمكنك استخدام الأمر: echo "$string" | awk '{if ($0 ~ /substring/) print "It's there!"}'
  3. هل بإمكاني استخدم sed للتحقق من وجود سلسلة فرعية؟
  4. نعم، يمكنك استخدام sed للتحقق من وجود سلسلة فرعية باستخدام الأمر: echo "$string" | sed -n '/substring/p'
  5. ما هي ميزة استخدام awk زيادة grep؟
  6. Awk يوفر إمكانات أكثر قوة لمعالجة النصوص ويمكنه تنفيذ إجراءات بناءً على تطابقات الأنماط، مما يجعله أكثر تنوعًا من grep.
  7. كيف يمكنني تجاهل الحالة عند البحث عن سلسلة فرعية؟
  8. لتجاهل حالة الأحرف عند البحث عن سلسلة فرعية، يمكنك استخدام الأمر -i الخيار مع grep: echo "$string" | grep -iq "substring"
  9. هل من الممكن استخدامها regex مع if تصريحات في باش؟
  10. نعم، يمكنك استخدام regex مع if البيانات في Bash باستخدام =~ المشغل أو العامل: if [[ "$string" =~ regex ]]; then

الأفكار النهائية حول احتواء السلسلة في Bash

يعد تحديد ما إذا كانت السلسلة تحتوي على سلسلة فرعية في Bash مهمة شائعة يمكن تنفيذها باستخدام عدة طرق، بما في ذلك العبارات الشرطية وأوامر grep وبيانات الحالة. توفر كل طريقة طريقة فريدة لحل المشكلة، مما يسمح لك باختيار الطريقة الأكثر ملاءمة بناءً على احتياجاتك الخاصة. من خلال إتقان هذه التقنيات، يمكنك تحسين كفاءة وسهولة قراءة نصوص Bash الخاصة بك.