الأمر grep هو أداة قوية في نظام Linux ويستخدم أساسًا للبحث والتحقق من وجود نص محدد داخل ملف أو مجموعة من الملفات. اسم “grep” هو اختصار لـ “global regular expression print”، والتي تشير إلى قدرة هذه الأداة على البحث عن تطابقات لتعبيرات منتظمة (Regular Expressions) في النصوص.

تصفية النصوص باستخدام grep يتم عن طريق تحديد تعبير منتظم يمثل النمط الذي تبحث عنه والذي يمكن أن يكون سلسلة نصية بسيطة أو تعبير منتظم معقد. يمكنك استخدام grep للبحث عن نصوص تطابق هذا النمط في ملف واحد أو العديد من الملفات في دفعة واحدة.

بعض الخيارات الشائعة التي يمكن استخدامها مع grep تشمل:

  1. -i: يجعل البحث غير حساس لحالة الأحرف، مما يعني أنه يتجاهل التباين بين الحروف الكبيرة والصغيرة.
  2. -r أو -R: البحث العميق في المجلدات الفرعية.
  3. -l: يعرض فقط أسماء الملفات التي تحتوي على تطابقات.
  4. -v: يعرض الأسطر التي لا تحتوي على تطابق مع النمط المحدد.
  5. -n: يعرض رقم السطر لكل سطر مطابق.
  6. -c: يعرض عدد التطابقات المحسوبة لكل ملف.

مثال يوضح استخدام grep:

grep "example" file.txt

سيقوم الأمر بالبحث عن كل الأسطر التي تحتوي على الكلمة “example” في الملف file.txt ويقوم بعرضها في الطرفية.

حالات استخدام grep

البحث في ملف معين:

يمكنك استخدام grep للبحث عن نص محدد في ملف واحد عن طريق تحديد اسم الملف كوسيطة في الأمر. على سبيل المثال:

grep "pattern" file.txt

هذا سيبحث عن النص المحدد “pattern” في الملف “file.txt”.

البحث في مجموعة من الملفات:

بدلاً من البحث في ملف واحد، يمكنك استخدام grep للبحث في مجموعة من الملفات في نفس الوقت. يمكنك تحديد العديد من أسماء الملفات كوسيطة بعد النمط. على سبيل المثال:

grep "pattern" file1.txt file2.txt file3.txt

سيبحث هذا الأمر عن النص المحدد “pattern” في الملفات file1.txt و file2.txt و file3.txt.

البحث العميق في المجلدات الفرعية:

grep -r "pattern" /path/to/directory

سيقوم هذا الأمر بالبحث عن النص المحدد “pattern” في جميع الملفات داخل المجلد /path/to/directory ومجلداته الفرعية.

البحث العميق في المجلدات الفرعية مع طباعة اسم الملفات فقط:

grep -rl "pattern" /path/to/directory

سيقوم هذا الأمر بالبحث عن النص المحدد “pattern” في جميع الملفات داخل المجلد /path/to/directory ومجلداته الفرعية. ولكن بدلا من طباعة السطر الذي عُثر فيه على التطابق، سيتم عرض اسم ومسار الملف الذي يحتوي على التطابق.

تحديد تعبير منتظم:

grep "[0-9]+ items" file.txt

سيبحث هذا الأمر عن أي نص يحتوي على أي رقم يتبعه كلمة “items” في الملف file.txt.

عمل grep في الأنابيب (Pipelines):

يمكنك استخدام grep كجزء من سلسلة أوامر أكبر باستخدام الأنابيب. على سبيل المثال، يمكنك توجيه نتائج grep إلى أمر آخر للتعامل مع النتائج. على سبيل المثال:

cat file.txt | grep "pattern"

سيقوم هذا الأمر بقراءة محتويات الملف file.txt باستخدام أمر cat، ثم سيقوم بتمريرها إلى grep للبحث عن النص المحدد “pattern”.

هذه مجرد بعض الاستخدامات الأكثر شيوعًا لأمر grep. هناك المزيد من الخيارات والتقنيات المتقدمة التي يمكنك استكشافها لتعميق فهمك وتحسين استخدامك للأمر grep.

يمكنك دائما استخدام الأمر التالي لطباعة جميع أنواع التعليمات البرمجية التي يمكن استخدام grep به:

grep --help