عندما يتعلق الأمر بالبحث عن أنماط نص محددة في Linux، تتبادر إلى الذهن أداتان قويتان: grep
وتعبيرات منتظمة. بدمج وظائف grep
مع مرونة التعبيرات المنتظمة، يمكن للمستخدمين البحث بكفاءة من خلال الملفات والمجلدات، محددين المعلومات ذات الصلة بسهولة. في هذا المقال، سنتعرف على أساسيات استخدام grep
والتعبيرات المنتظمة في Linux ونوضح كيف يمكن استخدامهما للبحث الفعال عن أنماط النص.
ما هو Grep؟
grep
هو اختصار لـ “Global Regular Expression Print”. إنه أداة سطر أوامر تتيح للمستخدمين البحث عن أنماط نص محددة داخل الملفات أو تدفقات الإدخال. يُستخدم على نطاق واسع في Linux وأنظمة التشغيل الشبيهة بيونكس بسبب بساطته وقدرات البحث القوية التي يوفرها.
صيغة grep
الأساسية هي كما يلي:
$ grep [خيارات] النمط [ملف...]
هنا، يمثل “النمط” النمط التعبير المنتظم الذي ترغب في البحث عنه، ويشير “الملف” إلى الملف أو الملفات التي ترغب في البحث فيها. إذا لم يتم تحديد أي ملف، فسيقرأ grep
من الإدخال القياسي.
فهم التعبيرات المنتظمة
التعبيرات المنتظمة (regex) هي سلسلة من الأحرف تحدد نمط البحث. إنها متعددة الاستخدامات بشكل لا يصدق ويمكن استخدامها لمطابقة سلاسل محددة أو أنماط أو حتى معايير معقدة داخل النص المعطى. تتكون التعبيرات المنتظمة من الأحرف العادية (مثل الحروف والأرقام) والأحرف الخاصة (مثل الحروف البدلية والمقياسات) التي تمنحها إمكانيات بحث قوية.
على سبيل المثال، ستطابق التعبير المنتظم ^Hello
أي سطر في ملف يبدأ بكلمة “Hello”. بالمثل، سيطابق النمط ([A-Za-z]+)@([A-Za-z]+)\.com
أي عنوان بريد إلكتروني في التنسيق “[email protected]“.
الاستخدام الأساسي لـ Grep والتعبيرات المنتظمة
دعنا نستكشف بعض الأمثلة العملية لفهم كيفية عمل grep
والتعبيرات المنتظمة معًا.
البحث عن كلمة محددة في ملف
للبحث عن كلمة محددة في ملف، يمكنك استخدام grep
مع تعبير منتظم أساسي. على سبيل المثال، للعثور على جميع حالات كلمة “Linux” في ملف يحمل اسم example.txt
، يمكنك تشغيل الأمر التالي:
$ grep "Linux" example.txt
تجاهل حساسية الأحرف
بشكل افتراضي، يعمل grep
بحساسية لحالة الأحرف. ومع ذلك، يمكنك جعله غير حساس لحالة الأحرف باستخدام الخيار -i
. على سبيل المثال، للبحث عن كلمة “linux” بطريقة غير حساسة لحالة الأحرف، يمكنك استخدام الأمر التالي:
$ grep -i "linux" example.txt
البحث بشكل متكرر في المجلدات
يسمح grep
أيضًا لك بالبحث عن أنماط بشكل متكرر في المجلدات. باستخدام الخيار -r
، يمكنك أن توجه grep
بالبحث عن النمط المحدد في جميع الملفات الموجودة في المجلد والمجلدات الفرعية. فيما يلي مثال:
$ grep -r "pattern" /path/to/directory
عرض أر
قام الأسطر
إذا كنت ترغب في عرض أرقام الأسطر إلى جانب الأسطر المطابقة، يمكنك استخدام الخيار -n
. هذا مفيد بشكل خاص عند التعامل مع ملفات كبيرة، حيث يساعدك على تحديد مواقع حدوث نمط محدد بسرعة. فيما يلي مثال:
$ grep -n "pattern" example.txt
استخدام التعبيرات المنتظمة
للاستفادة من كامل قوة grep
، يمكنك استخدام التعبيرات المنتظمة للبحث عن أنماط معقدة. توفر التعبيرات المنتظمة مجموعة واسعة من الأحرف الخاصة والعمليات التي تسمح لك بتحديد معايير بحث معقدة.
على سبيل المثال، للبحث عن جميع الأسطر التي تحتوي على أرقام في ملف، يمكنك استخدام التعبير المنتظم [0-9]
:
$ grep "[0-9]" example.txt
بالمثل، للبحث عن الأسطر التي تبدأ بنمط محدد، يمكنك استخدام رمز الرمز (^
). على سبيل المثال، سيتطابق الأمر التالي مع الأسطر التي تبدأ بـ “Hello”:
$ grep "^Hello" example.txt
أمثلة متقدمة للتعبيرات المنتظمة
تقدم التعبيرات المنتظمة ميزات متقدمة مختلفة تعزز قدرات البحث في grep
. إليك بعض الأمثلة:
- مطابقة عدة أحرف: يمكنك استخدام النقطة (
.
) كحرف بدلية لمطابقة أي حرف واحد. على سبيل المثال، سيتطابق التعبير المنتظمb.t
مع “bat” و”bet” و”bit” وما إلى ذلك. - المقياسات: يمكنك استخدام المقياسات لتحديد عدد حدوث حرف أو مجموعة. على سبيل المثال، سيتطابق
ba*t
مع “bt” و”bat” و”baat” وما إلى ذلك. - فئات الأحرف: تسمح لك الأقواس المربعة (
[]
) بتحديد فئة من الأحرف. على سبيل المثال،[aeiou]
ستطابق أي حرف متحرك، و[0-9]
ستطابق أي رقم.
بالتأكيد! فيما يلي بعض الخطوات الإضافية التي يمكنك تضمينها عند استخدام grep
والتعبيرات المنتظمة للبحث عن أنماط النص في Linux:
استخدام المراسيم للمطابقة الدقيقة
المراسيم هي عناصر خاصة تسمح لك بتحديد موقع مطابقة النمط في سطر معين. المرسوم العنواني (^
) يشير إلى بداية السطر، والمرسوم الدولاري ($
) يشير إلى نهاية السطر. باستخدام المراسيم، يمكنك ضمان مطابقة النمط بالضبط في الموقع الذي ترغب فيه.
على سبيل المثال، للعثور على الأسطر التي تنتهي بكلمة “Linux” في ملف، يمكنك استخدام الأمر التالي:
$ grep "Linux$" example.txt
بالمثل، للبحث عن الأسطر التي تبدأ بـ “Hello” وتنتهي بـ “world”، يمكنك استخدام الأمر التالي:
$ grep "^Hello.*world$" example.txt
استبعاد الأنماط من البحث
في بعض الأحيان قد ترغب في استبعاد بعض الأنماط من نتائج البحث. يوفر grep
الخيار -v
لعكس المطابقة وعرض الأسطر التي لا تتطابق مع النمط المعطى.
على سبيل المثال، للبحث عن الأسطر في ملف لا تحتوي على كلمة “error”، يمكنك استخدام الأمر التالي:
$ grep -v "error" example.txt
البحث عن كلمات كاملة فقط
بشكل افتراضي، يقوم grep
بمطابقة الأنماط التي تكون جزءًا من كلمة أكبر. إذا كنت ترغب في البحث عن كلمات كاملة فقط، يمكنك استخدام الخيار -w
. هذا يضمن أن النمط يتطابق ككلمة كاملة وليس جزءًا من كلمة أخرى.
على سبيل المثال، للعثور على الأسطر التي تحتوي على كلمة “Linux” ككلمة كاملة، يمكنك استخدام الأمر التالي:
$ grep -w "Linux" example.txt
البحث عن أنماط في أنواع محددة من الملفات
إذا كنت ترغب في البحث عن أنماط في أنواع محددة من الملفات، يمكنك استخدام خيارات --include
أو --exclude
لتحديد أنماط الملفات. يتيح لك ذلك تحديد نطاق البحث في أنواع ملفات محددة، مما يوفر الوقت والجهد.
على سبيل المثال، للبحث عن نمط في جميع ملفات النص داخل دليل، يمكنك استخدام الأمر التالي:
$ grep "pattern" --include "*.txt" /path/to/directory
حفظ نتائج البحث في ملف
لحفظ نتائج البحث في ملف لمزيد من التحليل أو الإشارة إليها، يمكنك إعادة توجيه إخراج grep
إلى ملف
باستخدام عامل التوجيه >
.
على سبيل المثال، لحفظ جميع الأسطر التي تحتوي على كلمة “Linux” في ملف يحمل اسم results.txt
، يمكنك استخدام الأمر التالي:
$ grep "Linux" example.txt > results.txt
الآن، ستتم تخزين الأسطر المتطابقة في ملف results.txt
.
توسع هذه الخطوات الإضافية قدرات grep
وتسمح لك بتنفيذ بحث أكثر تحديدًا وتوجيهًا استنادًا إلى متطلباتك. يمكن أن تساعدك تجارب مختلفة مع الخيارات والتعبيرات المنتظمة على أن تصبح ماهرًا في البحث عن أنماط النص في Linux.
خلاصة
توفر مزيج grep
والتعبيرات المنتظمة آلية قوية للبحث عن ومطابقة أنماط النص في Linux. من خلال استغلال مرونة وتعبيرية التعبيرات المنتظمة، يمكن للمستخدمين تنفيذ بحث دقيق ومعقد، مما يوفر الوقت والجهد.
في هذه المقالة، غطينا أساسيات grep
والتعبيرات المنتظمة، بما في ذلك بناء الجملة والخيارات الشائعة. استكشفنا أمثلة مختلفة لتوضيح كيف يمكن استخدام grep
للبحث عن كلمات وأنماط ومعايير معقدة. توفر التعبيرات المنتظمة مجموعة واسعة من الإمكانيات، مما يسمح للمستخدمين بتكييف بحثهم لتلبية متطلبات محددة.
من خلال إتقان grep
والتعبيرات المنتظمة، يمكنك أن تصبح ماهرًا في البحث عن أنماط النص في Linux، مما يعزز إنتاجيتك وكفاءتك عند العمل مع الملفات والمجلدات.