البرنامج التعليمي للتعبير العادي في Linux: مثال Grep Regex

ما هي تعبيرات Linux العادية؟

تعبيرات لينكس العادية هي أحرف خاصة تساعد في البحث عن البيانات ومطابقة الأنماط المعقدة. يتم اختصار التعبيرات العادية إلى "regexp" أو "regex". يتم استخدامها في العديد من برامج Linux مثل grep وbash وrename وsed وما إلى ذلك.

أنواع التعبيرات العادية

لسهولة الفهم، دعونا نتعلم الأنواع المختلفة من Regex واحدًا تلو الآخر.

انقر اضغط هنا إذا لم يكن من الممكن الوصول إلى الفيديو

التعبيرات العادية الأساسية

بعض الأوامر الشائعة الاستخدام مع التعبيرات العادية هي tr وsed وvi و البقرى. المدرجة أدناه هي بعض من Regex الأساسية.

رمز أوصاف
. يستبدل أي حرف
^ يطابق بداية السلسلة
$ يطابق نهاية السلسلة
* يطابق صفرًا أو أكثر من مرات الحرف السابق
\ تمثيل الشخصيات الخاصة
() مجموعات التعبيرات العادية
? يطابق حرفًا واحدًا بالضبط

دعونا نرى مثالا.

قم بتنفيذ نموذج القط لرؤية محتويات ملف موجود

التعبيرات العادية الأساسية

ابحث عن محتوى يحتوي على الحرف "أ".

التعبيرات العادية الأساسية

'^' يطابق بداية السلسلة. فلنبحث عن المحتوى الذي يبدأ بـ

التعبيرات العادية الأساسية

تتم تصفية الأسطر التي ت��دأ بالحرف فقط. يتم تجاهل الأسطر التي لا تحتوي على الحرف "a" في البداية.

دعونا ننظر إلى مثال آخر -

التعبيرات العادية الأساسية

حدد فقط تلك الأسطر التي تنتهي بـ t باستخدام $

التعبيرات العادية الأساسية

الفاصل الزمني التعبيرات العادية

تخبرنا هذه التعبيرات عن عدد مرات ظهور الحرف في السلسلة. هم

التعبير الوصف
{ن} يطابق الحرف السابق الذي يظهر مرات "n" تمامًا
{ن ، م} يطابق الحرف السابق الذي يظهر 'n' مرات ولكن ليس أكثر من m
{ن، } يطابق الحرف السابق فقط عندما يظهر "n" مرات أو أكثر

على سبيل المثال:

تصفية جميع الأسطر التي تحتوي على الحرف "p"

الفاصل الزمني التعبيرات العادية

نريد التحقق من ظهور الحرف "p" مرتين بالضبط في سلسلة واحدة تلو الأخرى. لهذا سيكون بناء الجملة:

cat sample | grep -E p\{2}

الفاصل الزمني التعبيرات العادية

ملحوظة: أنت بحاجة إلى إضافة -E مع هذه التعبيرات العادية.

التعبيرات العادية الموسعة

تحتوي هذه التعبيرات النمطية على مجموعات تتكون من أكثر من تعبير واحد. البعض منهم:

التعبير الوصف
\+ يطابق تكرارًا واحدًا أو أكثر للحرف السابق
\? يطابق صفرًا أو يتطابق مع تكرار واحد للحرف السابق

على سبيل المثال:

البحث عن جميع الأحرف 't'

التعبيرات العادية الموسعة

لنفترض أننا نريد تصفية الأسطر التي يسبق الحرف "أ" فيها الحرف "ت"

يمكننا استخدام الأمر مثل

cat sample|grep "a\+t"

التعبيرات العادية الموسعة

توسيع هدفين

بناء جملة توسيع الأقواس هو إما تسلسل أو قائمة مفصولة بفواصل من العناصر الموجودة داخل الأقواس المتعرجة "{}". يتم فصل عناصر البداية والنهاية في التسلسل بنقطتين ".."

بعض الأمثلة:

توسيع هدفين

في الأمثلة المذكورة أعلاه، يقوم أمر echo بإنشاء سلاسل باستخدام الأقواس الموسعّة.

ملخص:

  • التعبيرات العادية هي مجموعة من الأحرف المستخدمة للتحقق من الأنماط في السلاسل
  • ويطلق عليهم أيضًا اسم "regexp" و"regex"
  • من المهم تعلم التعبيرات العادية لكتابة النصوص
  • بعض التعبيرات العادية الأساسية هي:
رمز أوصاف
. يستبدل أي حرف
^ يطابق بداية السلسلة
$ يطابق نهاية السلسلة
  • بعض التعبيرات العادية الموسعة هي:
التعبير الوصف

\+

يطابق تكرارًا واحدًا أو أكثر للحرف السابق
\? يطابق صفرًا أو يتطابق مع تكرار واحد للحرف السابق
  • بعض التعبيرات العادية الفاصلة هي:
التعبير الوصف
{ن} يطابق الحرف السابق الذي يظهر مرات "n" تمامًا
{ن ، م} يطابق الحرف السابق الذي يظهر 'n' مرات ولكن ليس أكثر من m
{ن، } يطابق الحرف السابق فقط عندما يظهر "n" مرات أو أكثر
  • يتم استخدام توسيع القوس لإنشاء سلاسل. يساعد في إنشاء سلاسل متعددة من سلسلة واحدة.

تلخيص هذه التدوينة بـ: