الدليل الشامل لأمر grep في أوبونتو

نظرة عامة

يُعد أمر grep أداة لا غنى عنها عند تحليل الملفات النصية الضخمة أو سجلات النظام في بيئة لينكس. في هذا المقال، سنستعرض التقنيات العملية الأساسية لتشغيل grep في طرفية Ubuntu للبحث عن النصوص المطلوبة بسرعة وتفسير نتائج المخرجات بدقة.

البحث الأساسي عن النصوص وخيار تجاهل حالة الأحرف (-i)

نقوم بتشغيل الأمر mkdir -p ~/grep_demo && cd ~/grep_demo لإنشاء مساحة عمل مستقلة وتغيير الدليل إليها من أجل التطبيق العملي لأمر grep.

mkdir -p ~/grep_demo && cd ~/grep_demo

نقوم بتشغيل الأمر echo -e 'Ubuntu Linux Server\nubuntu desktop\nDebian GNU/Linux' > sample.txt لإنشاء ملف نصي يحتوي على سلاسل نصية تجريبية لاستخدامها في اختبار البحث.

echo -e ‘Ubuntu Linux Server\nubuntu desktop\nDebian GNU/Linux’ > sample.txt

يبحث أمر grep عن نمط أو نص محدد داخل الملفات أو النصوص ويعرض الأسطر المطابقة.
في الحالة الافتراضية، يميّز الأمر بدقة بين الأحرف الكبيرة والصغيرة، لذا سيتم العثور فقط على الأسطر التي تطابق Ubuntu تماماً.
⚙️ [الخيارات الرئيسية]

-i : يتجاهل حالة الأحرف الكبيرة والصغيرة ويبحث عن الأنماط المطابقة.
-v : يعكس البحث لعرض الأسطر التي لا تطابق النمط المحدد فقط.
-n : يعرض أرقام الأسطر التي تحتوي على المحتوى المطابق.
-c : يحسب ويعرض العدد الإجمالي للأسطر المطابقة فقط.
-r : يبحث تكرارياً داخل جميع الملفات في الأدلة الفرعية.
-l : يسرد فقط أسماء الملفات التي تحتوي على المحتوى المطابق.
-E : يبحث باستخدام التعبيرات النمطية الموسعة (ERE).

grep ‘Ubuntu’ sample.txt

عند إضافة الخيار -i، يتم البحث دون التمييز بين الأحرف الكبيرة والصغيرة.
وبالتالي، يتم عرض كل من الأسطر التي تحتوي على Ubuntu التي تبدأ بحرف كبير و ubuntu التي تبدأ بحرف صغير.

grep -i ‘ubuntu’ sample.txt

عرض أرقام الأسطر (-n) والبحث المعكوس عن الأسطر غير المطابقة (-v)

نقوم بتشغيل الأمر echo -e 'INFO: Service started\nERROR: Connection timeout\nINFO: Request handled\nERROR: Disk full' > app.log لإنشاء بيانات سجلات افتراضية لاستخدامها في تمرين تحليل السجلات.

echo -e ‘INFO: Service started\nERROR: Connection timeout\nINFO: Request handled\nERROR: Disk full’ > app.log

عند استخدام الخيار -n، يتم عرض أرقام الأسطر المطابقة لنمط البحث بجانب المحتوى.
يتم عرض أرقام الأسطر والمحتوى الذي يتضمن النص ERROR معاً، مما يتيح تحديد موقع حدوث المشكلة بسرعة.

grep -n ‘ERROR’ app.log

عند استخدام الخيار -v، يتم عكس المخرجات لعرض الأسطر التي لا تطابق النمط المحدد فقط.
يتيح ذلك استبعاد بنود INFO التي تشير إلى الحالة الطبيعية وتصفية الأسطر المتعلقة بالأخطاء فقط للتحقق منها.

grep -v ‘INFO’ app.log

البحث التكراري في الأدلة الفرعية (-r) وعرض أسماء الملفات فقط (-l)

نقوم بتشغيل الأمر mkdir -p ~/grep_demo/logs/archive لإنشاء بنية دليل فرعي للأرشفة من أجل تمرين البحث التكراري.

mkdir -p ~/grep_demo/logs/archive

نقوم بتشغيل الأمر echo 'database error' > ~/grep_demo/logs/db.log لإنشاء ملف سجل أخطاء قاعدة البيانات لاستخدامه في اختبار البحث.

echo ‘database error’ > ~/grep_demo/logs/db.log

نقوم بتشغيل الأمر echo 'cache hit' > ~/grep_demo/logs/cache.log لإنشاء ملف سجل ذاكرة التخزين المؤقت للتحقق من السجلات العادية.

echo ‘cache hit’ > ~/grep_demo/logs/cache.log

نقوم بتشغيل الأمر echo 'fatal error occurred' > ~/grep_demo/logs/archive/old.log لإنشاء ملف سجل أخطاء قديم لاختبار استكشاف الأدلة الفرعية.

echo ‘fatal error occurred’ > ~/grep_demo/logs/archive/old.log

عند استخدام الخيار -r مع الخيار -n معاً، يتم البحث تكرارياً داخل الأدلة الفرعية مع عرض أرقام الأسطر المطابقة.
يتم عرض مسارات الملفات وأرقام الأسطر ومحتوياتها التي تتضمن النص error في جميع الملفات الموجودة داخل دليل logs والدليل الفرعي archive.

grep -rn ’error’ ~/grep_demo/logs

عند إضافة الخيار -l وتشغيل الأمر بالصيغة -rl، يتم عرض قائمة بمسارات الملفات التي تحتوي على هذا النمط فقط بدلاً من عرض المحتوى المطابق.
يُعد هذا مفيداً للغاية لتصفية وتحديد الملفات التي حدث فيها error بسرعة من بين عدد لا يحصى من ملفات السجلات.

grep -rl ’error’ ~/grep_demo/logs

فحص سياق نتائج البحث (-A, -B, -C) والتمييز بالألوان

نقوم بتشغيل الأمر echo -e 'Step 1: Init\nStep 2: Load Config\nStep 3: Critical Failure\nStep 4: Cleanup\nStep 5: Exit' > process.log لإنشاء ملف سجل تجريبي للتدرب على التحقق من تقدم مراحل العمليات وسياق الأخطاء.

echo -e ‘Step 1: Init\nStep 2: Load Config\nStep 3: Critical Failure\nStep 4: Cleanup\nStep 5: Exit’ > process.log

عند استخدام الخيارين -B و -A، يتم عرض عدد محدد من الأسطر السابقة (Before) واللاحقة (After) بناءً على السطر المطابق.
مع خيار --color=always الذي يبرز عبارة Critical Failure المطابقة بالألوان، يمكنك فحص السطر السابق وسطرين لاحقين لفهم تسلسل وسير العمليات قبل حدوث الخطأ وبعده.

grep –color=always -B 1 -A 2 ‘Critical Failure’ process.log

عند استخدام الخيار -C، يتم عرض نفس العدد من الأسطر في كلا الاتجاهين السابق واللاحق (Context) في وقت واحد بناءً على السطر المطابق.
يتم عرض سطر واحد قبل وسطر واحد بعد السطر الذي يحتوي على Critical Failure بشكل متزامن، مما يتيح التحقق من السياق الأساسي بإيجاز أكبر.

grep –color=always -C 1 ‘Critical Failure’ process.log

تناولنا حتى الآن النقاط الأساسية لأمر grep في بيئة أوبونتو، بدءاً من خيارات البحث الأساسية وحتى طرق استخدامه في تحليل السجلات عملياً.
ندعوك لتطبيق هذه الأنماط المكتسبة اليوم بفاعلية في مهام الطرفية الفعلية لرفع كفاءة عملك إلى مستوى جديد.