البرنامج التعليمي للتعبير العادي في Linux: مثال Grep Regex
⚡ ملخص ذكي
التعبيرات النمطية في لينكس هي تسلسلات أحرف خاصة تبحث في البيانات وتطابق الأنماط المعقدة عبر أدوات مثل grep و sed و vi، باستخدام الأشكال الأساسية والفترات الزمنية والممتدة وتوسيع الأقواس لتصفية النص بدقة.

تُعدّ التعابير النمطية إحدى أقوى ميزات لينكس أدوات معالجة النصوص، التي تتيح لك مطابقة البيانات وتصفيتها وتحويلها باستخدام أنماط مختصرة. تشرح هذه الصفحة الأشكال الأساسية والفترية والموسعة، بالإضافة إلى توسيع الأقواس، مع أمثلة عملية لـ grep.
ما هي تعبيرات Linux العادية؟
التعابير النمطية في لينكس عبارة عن أحرف خاصة تساعد في البحث عن البيانات ومطابقة الأنماط المعقدة. يُختصر التعبير النمطي إلى "regexp" أو "regex". تُستخدم هذه التعابير في العديد من برامج لينكس مثل: البقرى، bash، rename، sed، والمزيد.
أنواع التعبيرات العادية
لتسهيل الفهم، دعونا نتعرف على أنواع التعبيرات النمطية المختلفة واحدة تلو الأخرى. تغطي هذه الصفحة التعبيرات النمطية الأساسية، والفترات، والموسعة، وتنتهي بتوسيع الأقواس.
التعبيرات العادية الأساسية
من بين الأوامر الشائعة الاستخدام التي تعمل مع التعبيرات النمطية: tr و sed. viو grep. يسرد الجدول أدناه بعض التعبيرات النمطية الأساسية.
| رمز | الوصف |
|---|---|
| . | يستبدل أي حرف |
| ^ | يطابق بداية سلسلة نصية |
| $ | يطابق نهاية سلسلة نصية |
| * | يطابق الحرف السابق صفرًا أو أكثر من المرات |
| \ | يمثل الأحرف الخاصة |
| () | مجموعات التعبيرات العادية |
| ? | يطابق حرفًا واحدًا فقط |
لنلقِ نظرة على مثال. أولاً، قم بتشغيل الأمر cat sample لعرض محتويات ملف موجود، كما هو موضح أدناه.
بعد ذلك، ابحث عن محتوى يحتوي على الحرف 'a'. تُظهر لقطة الشاشة أدناه أن الأمر grep يُعيد كل سطر يتضمن الحرف 'a'.
يشير الرمز '^' إلى بداية سلسلة نصية. يبحث المثال أدناه عن محتوى يبدأ بالحرف 'a'.
يتم تصفية الأسطر التي تبدأ بالحرف فقط. أما الأسطر التي لا تحتوي على الحرف 'a' في بدايتها فيتم تجاهلها.
لنلقِ نظرة على مثال آخر. تُظهر لقطة الشاشة أدناه محتويات الملف النموذجي قبل تطبيق التصفية بناءً على نهاية السطر.
حدد فقط تلك الأسطر التي تنتهي بالحرف 't' باستخدام علامة التثبيت '$'، كما هو موضح أدناه.
الفاصل الزمني التعبيرات العادية
تحدد هذه التعبيرات عدد مرات ظهور حرف معين في سلسلة نصية. وهي مدرجة أدناه.
| التعبير | الوصف |
|---|---|
| {ن} | يطابق الحرف السابق الذي يظهر مرات "n" تمامًا |
| {ن ، م} | يطابق الحرف السابق الذي يظهر 'n' مرات ولكن ليس أكثر من m |
| {ن، } | يطابق الحرف السابق فقط عندما يظهر "n" مرات أو أكثر |
على سبيل المثال، قم بتصفية جميع الأسطر التي تحتوي على الحرف 'p'. تُظهر لقطة الشاشة أدناه الأسطر المطابقة.
والآن، تحقق من ظهور الحرف 'p' مرتين بالضبط في السلسلة النصية، واحدة تلو الأخرى. صيغة ذلك هي:
cat sample | grep -E p\{2}
تظهر نتيجة مطابقة الفترات أدناه.
ملحوظة: أنت بحاجة إلى إضافة -E مع هذه التعبيرات العادية.
التعبيرات العادية الموسعة
تجمع هذه التعابير النمطية أكثر من تعبير واحد. بعضها هو:
| التعبير | الوصف |
|---|---|
| \+ | يطابق تكرارًا واحدًا أو أكثر للحرف السابق |
| \? | يطابق صفرًا أو يتطابق مع تكرار واحد للحرف السابق |
على سبيل المثال، ابحث عن جميع حالات ظهور الحرف 't'. تُظهر لقطة الشاشة أدناه النتيجة.
لنفترض أنك تريد تصفية الأسطر التي يسبق فيها الحرف 'a' الحرف 't'. يمكنك استخدام أمر مثل الأمر التالي:
cat sample|grep "a\+t"
يظهر الناتج في لقطة الشاشة التالية.
توسيع هدفين
صيغة توسيع الأقواس المعقوفة هي إما سلسلة أو قائمة عناصر مفصولة بفواصل داخل أقواس معقوفة '{}'. يتم فصل العناصر البادئة والنهائية في السلسلة بنقطتين '..'.
بعض الأمثلة موضحة أدناه.
في الأمثلة أعلاه، يقوم الأمر echo بإنشاء سلاسل نصية باستخدام توسيع الأقواس، مما ينتج عنه سلاسل نصية متعددة من نمط واحد.










