دليل شامل لأمر Grep: البحث المتقدم عن الملفات والنصوص في أنظمة Linux و Unix

دقائق القراءة: 6
يُعد الأمر grep، الذي يرمز إلى “البحث الشامل عن التعبير النمطي والطباعة” (Globally Search For Regular Expression and Print out)، أداة قوية وضرورية لمستخدمي أنظمة التشغيل الشبيهة بيونكس مثل Linux و Unix. تتيح هذه الأداة سطر الأوامر البحث عن أنماط نصية محددة داخل ملف واحد أو مجموعة من الملفات بكفاءة عالية. بفضل مجموعة واسعة من الخيارات المتاحة، يمكن لأمر grep تنفيذ عمليات بحث معقدة ومتنوعة، مما يجعله حجر الزاوية في إدارة الملفات وتحليل السجلات. سيتناول هذا الدليل كيفية استخدام grep مع خياراته المتعددة، بالإضافة إلى استعراض أساسيات التعبيرات النمطية لتعزيز قدرات البحث لديك.

كيفية استخدام أمر Grep الأساسي

يمكن استخدام أمر grep للبحث عن نمط معين داخل ملف أو مجموعة من الملفات دون الحاجة لتمرير أي خيارات إضافية. الصيغة الأساسية للأمر هي كالتالي:

grep '<النص-المراد-البحث-عنه>' <الملف/الملفات>

من المهم ملاحظة أنه يجب وضع النص المراد البحث عنه بين علامتي اقتباس مفردة أو مزدوجة إذا كان يتكون من أكثر من كلمة واحدة. كما يمكنك استخدام حرف البدل * لتحديد جميع الملفات في دليل معين.

يقوم الأمر بطباعة الأسطر التي تحتوي على النمط المطابق في الملفات المحددة. إذا لم يتم العثور على أي تطابق، فلن يتم عرض أي إخراج في الطرفية.

على سبيل المثال، لنفترض أن لدينا الملف التالي (المسمى grep.txt):

Hello, how are you
I am grep
Nice to meet you

سيقوم أمر grep التالي بالبحث عن جميع تكرارات كلمة 'you':

grep you grep.txt

النتيجة ستكون:

Hello, how are you
Nice to meet you

عادةً ما تظهر الكلمة 'you' بلون مختلف عن باقي النص لتسهيل تحديد ما تم البحث عنه. ومع ذلك، يوفر grep العديد من الخيارات التي تساعدنا على تحقيق المزيد من المرونة والدقة أثناء عملية البحث. دعنا نستعرض تسعة من هذه الخيارات ونطبقها على المثال أعلاه.

خيارات متقدمة لأمر Grep لتعزيز كفاءة البحث

1. خيار -n (أو --line-number): عرض أرقام الأسطر

يطبع هذا الخيار التطابقات التي تم العثور عليها مع أرقام الأسطر التي ظهرت فيها. إذا نظرت إلى النتيجة في المثال السابق، ستلاحظ عدم وجود أرقام أسطر.

grep you grep.txt -n

النتيجة:

1: Hello, how are you
3: Nice to meet you

2. خيار -c (أو --count): حساب عدد الأسطر المطابقة

grep you grep.txt -c

النتيجة:

2

تجدر الإشارة إلى أنه إذا كانت هناك كلمة 'you' أخرى في السطر الأول، فإن الخيار -c سيظل يطبع 2. هذا لأنه يهتم بعدد الأسطر التي تظهر فيها التطابقات، وليس بعدد مرات تكرار النمط داخل هذه الأسطر.

3. خيار -v (أو --invert-match): عرض الأسطر غير المطابقة

يقوم هذا الخيار بطباعة الأسطر التي لا تتطابق مع النمط المحدد.

grep you grep.txt -v -n

النتيجة:

2: I am grep

لاحظ أننا استخدمنا أيضًا الخيار -n؟ نعم، يمكنك تطبيق خيارات متعددة في أمر واحد لزيادة الفعالية.

4. خيار -i (أو --ignore-case): تجاهل حالة الأحرف

يُستخدم هذا الخيار لجعل البحث غير حساس لحالة الأحرف (أي لا يفرق بين الأحرف الكبيرة والصغيرة).

# الأمر 1
grep You grep.txt

# الأمر 2
grep YoU grep.txt -i

النتائج:

# النتيجة 1
# لا يوجد نتيجة (لأن 'You' بحرف كبير لا تتطابق مع 'you' بحرف صغير)

# النتيجة 2
Hello, how are you
Nice to meet you

5. خيار -l (أو --files-with-matches): طباعة أسماء الملفات المطابقة

يطبع هذا الخيار أسماء الملفات التي تحتوي على نمط مطابق، بدلاً من طباعة الأسطر نفسها.

# الأمر 1
grep you grep.txt -l

# الأمر 2
grep You grep.txt -i -l

النتائج:

# النتيجة 1
grep.txt

# النتيجة 2
# سيطبع أسماء جميع الملفات في الدليل الحالي التي تتطابق
# مع النص 'You' بغض النظر عن حالة الأحرف.

6. خيار -w (أو --word-regexp): مطابقة الكلمة بالكامل

بشكل افتراضي، يطابق grep السلاسل النصية التي تحتوي على النمط المحدد. هذا يعني أن الأمر grep yo grep.txt سيطبع نفس النتائج مثل grep you grep.txt لأن 'yo' يمكن العثور عليها في 'you'. وبالمثل، 'ou'. مع الخيار -w، يضمن grep أن تكون التطابقات هي نفس النمط المحدد بالضبط ككلمة كاملة.
مثال:

grep yo grep.txt -w

النتيجة:

لا يوجد نتيجة!

وذلك لأن 'yo' ليست كلمة كاملة بحد ذاتها في الملف.

7. خيار -o (أو --only-matching): طباعة النمط المطابق فقط

بشكل افتراضي، يطبع grep السطر بأكمله حيث تم العثور على النمط المطابق. مع الخيار -o، يتم طباعة النمط المطابق فقط، سطرًا بسطر.
مثال:

grep yo grep.txt -o

النتيجة:

yo

8. خيار -A (أو --after-context) و -B (أو --before-context): عرض الأسطر قبل وبعد التطابق

يُستخدم الخيار -A لطباعة عدد محدد من الأسطر بعد السطر المطابق، بينما يُستخدم الخيار -B لطباعة عدد محدد من الأسطر قبل السطر المطابق.

grep grep grep.txt -A 1 -B 1

النتيجة:

Hello, how are you
I am grep
Nice to meet you

هنا، النمط المطابق موجود في السطر الثاني (I am grep). الخيار -A 1 يعني سطر واحد بعد السطر المطابق، والخيار -B 1 يعني سطر واحد قبل السطر المطابق.
يوجد أيضًا خيار -C (أو --context) وهو يعادل استخدام -A و -B معًا بنفس القيمة. القيمة التي يتم تمريرها إلى -C ستُستخدم لكل من -A و -B.

9. خيار -R (أو --dereference-recursive): البحث المتكرر في الدلائل

بشكل افتراضي، لا يمكن لأمر grep البحث داخل الدلائل. إذا حاولت القيام بذلك، فستحصل على خطأ ("Is a directory"). مع الخيار -R، يصبح البحث عن الملفات داخل الدلائل والدلائل الفرعية ممكنًا.
مثال:

grep you .

النتيجة:

# سيطبع التطابقات لكلمة 'you' في الملفات
# والمجلدات بدءًا من الدليل الحالي بشكل متكرر.

هذا الخيار لا غنى عنه عند الحاجة للبحث في بنية ملفات معقدة.

التعبيرات النمطية (Regular Expressions) لتعريف الأنماط

يتيح grep أيضًا استخدام التعبيرات النمطية الأساسية لتحديد الأنماط المراد البحث عنها، مما يوفر مرونة هائلة في تحديد معايير البحث. اثنان من أهم هذه التعبيرات هما:

1. ^pattern: بداية السطر

يعني هذا النمط أن grep سيبحث عن السلاسل النصية التي تبدأ بالنمط المحدد بعد علامة ^.
مثال:

grep ^I grep.txt -n

النتيجة:

2: I am grep

هنا، تم العثور على السطر الذي يبدأ بالحرف 'I'.

2. pattern$: نهاية السطر

على النقيض من ^، تحدد علامة $ الأنماط التي سيتم مطابقتها إذا انتهى السطر بالسلسلة النصية الموجودة قبل علامة $.
مثال:

grep you$ grep.txt -n

النتيجة:

1: Hello, how are you
3: Nice to meet you

في هذا المثال، تم العثور على الأسطر التي تنتهي بكلمة 'you'.

الخلاصة التقنية

يُعد أمر grep أداة لا غنى عنها في ترسانة أي مطور أو مسؤول نظام يعمل في بيئة Linux أو Unix. إن فهم كيفية استخدامه بفعالية، بما في ذلك خياراته المتعددة وقدرته على التعامل مع التعبيرات النمطية، يمنحك قوة هائلة في تحليل البيانات، تصحيح الأخطاء، وإدارة الملفات. سواء كنت تبحث عن سطر معين في ملف سجل كبير، أو تحاول تحديد موقع ملف بناءً على محتواه، فإن grep يوفر لك الدقة والسرعة اللازمتين. إن إتقان هذه الأداة لا يقتصر على مجرد استعراض الخيارات، بل يتعداه إلى القدرة على دمجها بذكاء لحل مشكلات معقدة، مما يعزز من إنتاجيتك بشكل كبير في سطر الأوامر. لمزيد من التفاصيل والخيارات المتقدمة، يمكنك دائمًا الرجوع إلى صفحة الدليل (man grep) الخاصة بالأمر.

اترك تعليقاً

لن يتم نشر عنوان بريدك الإلكتروني. الحقول الإلزامية مشار إليها بـ *