الفرق بين المراجعتين لصفحة: «Bash/examples using grep»

من موسوعة حسوب
طلا ملخص تعديل
إدخال 2.0 محتوى الفصل الأول
سطر 1: سطر 1:
<noinclude>{{DISPLAYTITLE:أمثلة عن استخدام grep في Bash}}</noinclude>
<noinclude>{{DISPLAYTITLE:أمثلة عن استخدام grep في Bash}}</noinclude>
== التعابير النمطية Regular Expressions ==
التعبير النمطي (Regular Expression) هو أسلوب يصف مجموعة من النصوص (strings)، وتُبنى التعابير النمطية بشكل تناظري للتعابير الحسابية (arithmetic expressions) عبر استخدام عدة معامِلات لدمج التعابير الأصغر. وأصغر وحدة بنائية للتعابير النمطية هي تلك التي تطابق محرفًا واحدًا، فأغلب المحارف -بما في ذلك كل الحروف والأرقام- ما هي إلا تعابير نمطية تطابق أنفسها، ويمكن اقتباس أي محرف خاص (metacharacter) له معنىً خاص بسبقه بشرطة مائلة خلفية <code>\</code>.
== المحارف الخاصة للتعابير النمطية ==
يمكن إتباع التعبير النمطي بواحد من عدة معامِلات تكرار (محارف خاصة):
'''جدول 4.1 معامِلات التعابير الخاصة'''
{| class="wikitable"
!المعامل
!الأثر
|-
|<code>.</code>
|يطابق أي محرف وحيد.
|-
|<code>?</code>
|العنصر السابق لهذا المحرف يكون اختياريًا، وسيطابَق مرة واحدة على الأقل.
|-
|<code>*</code>
|سيطابَق العنصر السابق صفرًا أو أكثر من المرات.
|-
|<code>+</code>
|سيطابَق العنصر السابق مرة أو أكثر.
|-
|<code>{N}</code>
|سيطابَق العنصر السابق بعدد من المرات قدره N تحديدًا.
|-
|<code>{N,}</code>
|سيطابَق العنصر السابق N مرة أو أكثر.
|-
|<code>{N,M}</code>
|سيطابَق العنصر السابق N مرة على الأقل، لكن ليس أكثر من M مرة.
|-
|<code>-</code>
|يمثل هذا المعاملُ المدى (range) إن لم يكن أول أو آخر عنصر في قائمة، أو نقطة النهاية لمدىً في قائمة.
|-
|<code>^</code>
|يطابق هذا المحرفُ النص الفارغ في بداية سطر ما، كما يمثل المحارف التي ليست في مدى قائمة ما.
|-
|<code>$</code>
|يطابق هذا المحرف النص الفارغ في نهاية سطر ما.
|-
|<code>\b</code>
|يطابق هذا المحرفُ النصَّ الفارغ (empty string) في نهاية كلمة.
|-
|<code>\B</code>
|يطابق النص الفارغ إن لم يكن في نهاية كلمة.
|-
|<code>\<</code>
|يطابق النص الفارغ في بداية كلمة.
|-
|<code>\></code>
|يطابق النص الفارغ في نهاية كلمة.
|}
يمكن وضع تعبيرين نمطيين في تسلسل (concatenation)، ويكون التعبير الناتج مطابِقًا لأي نص (string) تكوَّن بتسلسل نصيْن فرعيين مطابقيْن -بالترتيب- لتعبيريْن فرعيين متسلسليْن. كذلك يمكن ربط تعبيريْن نمطيين بمعامل الحرف المَزيد <code>|</code>، ويطابق التعبير النمطي الناتج أي نص مطابق لأي من التعبيريْن.
للتكرار (Repitition) أولوية أعلى من التسلسل (Concatenation)، والتسلسل بدوره له أولوية أعلى من التناوب (Alternation). ولإلغاء قاعدة الأولوية تلك يمكن وضع تعبير فرعي بالكامل بين قوسين <code>()</code>.
== الفرق بين التعبير النمطي الأساسي والممتد ==
تفقد المحارف الخاصة التالية معناها في التعابير النمطية الأساسية (Basic Regular Expression): <code>?</code> ، <code>+</code> ، <code>{</code> ، <code>|</code> ، <code>(</code> ، <code>)</code>، وتُستخدم نفس المحارف مسبوقة بشرطة مائلة خلفية بدلًا من ذلك <code>?\</code> , <code>+\</code> , <code>{\</code> , <code>|\</code> , <code>(\</code> , <code>)\</code>. انظر توثيق النظام لديك لترى أي الأوامر التي تستخدم التعابير النمطية تدعم التعابير الممتدة.
== انظر أيضًا ==
* [[Bash/variables|المتغيرات في Bash]].
* [[Bash/quoting charactersBash|اقتباس المحارف في Bash]].
* [[Bash/shell expansion|التوسعات في Bash]].
== مصادر ==
* [http://tldp.org/LDP/Bash-Beginners-Guide/html/sect_04_01.html دليل Bash للمبتدئين، باب التعابير النمطية، فصل التعابير النمطية].
* [http://tldp.org/LDP/Bash-Beginners-Guide/html/sect_04_02.html دليل Bash للمبتدئين، باب التعابير النمطية، فصل أمثلة على استخدام grep مع التعابير النمطية].

مراجعة 10:05، 22 أغسطس 2018


التعابير النمطية Regular Expressions

التعبير النمطي (Regular Expression) هو أسلوب يصف مجموعة من النصوص (strings)، وتُبنى التعابير النمطية بشكل تناظري للتعابير الحسابية (arithmetic expressions) عبر استخدام عدة معامِلات لدمج التعابير الأصغر. وأصغر وحدة بنائية للتعابير النمطية هي تلك التي تطابق محرفًا واحدًا، فأغلب المحارف -بما في ذلك كل الحروف والأرقام- ما هي إلا تعابير نمطية تطابق أنفسها، ويمكن اقتباس أي محرف خاص (metacharacter) له معنىً خاص بسبقه بشرطة مائلة خلفية \.

المحارف الخاصة للتعابير النمطية

يمكن إتباع التعبير النمطي بواحد من عدة معامِلات تكرار (محارف خاصة):

جدول 4.1 معامِلات التعابير الخاصة

المعامل الأثر
. يطابق أي محرف وحيد.
? العنصر السابق لهذا المحرف يكون اختياريًا، وسيطابَق مرة واحدة على الأقل.
* سيطابَق العنصر السابق صفرًا أو أكثر من المرات.
+ سيطابَق العنصر السابق مرة أو أكثر.
{N} سيطابَق العنصر السابق بعدد من المرات قدره N تحديدًا.
{N,} سيطابَق العنصر السابق N مرة أو أكثر.
{N,M} سيطابَق العنصر السابق N مرة على الأقل، لكن ليس أكثر من M مرة.
- يمثل هذا المعاملُ المدى (range) إن لم يكن أول أو آخر عنصر في قائمة، أو نقطة النهاية لمدىً في قائمة.
^ يطابق هذا المحرفُ النص الفارغ في بداية سطر ما، كما يمثل المحارف التي ليست في مدى قائمة ما.
$ يطابق هذا المحرف النص الفارغ في نهاية سطر ما.
\b يطابق هذا المحرفُ النصَّ الفارغ (empty string) في نهاية كلمة.
\B يطابق النص الفارغ إن لم يكن في نهاية كلمة.
\< يطابق النص الفارغ في بداية كلمة.
\> يطابق النص الفارغ في نهاية كلمة.

يمكن وضع تعبيرين نمطيين في تسلسل (concatenation)، ويكون التعبير الناتج مطابِقًا لأي نص (string) تكوَّن بتسلسل نصيْن فرعيين مطابقيْن -بالترتيب- لتعبيريْن فرعيين متسلسليْن. كذلك يمكن ربط تعبيريْن نمطيين بمعامل الحرف المَزيد |، ويطابق التعبير النمطي الناتج أي نص مطابق لأي من التعبيريْن.

للتكرار (Repitition) أولوية أعلى من التسلسل (Concatenation)، والتسلسل بدوره له أولوية أعلى من التناوب (Alternation). ولإلغاء قاعدة الأولوية تلك يمكن وضع تعبير فرعي بالكامل بين قوسين ().

الفرق بين التعبير النمطي الأساسي والممتد

تفقد المحارف الخاصة التالية معناها في التعابير النمطية الأساسية (Basic Regular Expression): ? ، + ، { ، | ، ( ، )، وتُستخدم نفس المحارف مسبوقة بشرطة مائلة خلفية بدلًا من ذلك ?\ , +\ , {\ , |\ , (\ , )\. انظر توثيق النظام لديك لترى أي الأوامر التي تستخدم التعابير النمطية تدعم التعابير الممتدة.

انظر أيضًا

مصادر