AzLearn

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

Search with grep

مفهوم ~16 دقيقة

البحث باستخدام grep — Search with grep

grep من أكثر أوامر Unix استخداماً. وظيفته الأساسية أن يقرأ نصاً ويطبع السطور التي تطابق نمطاً. في سكربتات Bash، ستستخدمه للبحث في logs، فلترة نتائج أوامر أخرى، أو التحقق من وجود كلمة داخل ملف. القوة ليست في الأمر وحده، بل في دمجه داخل pipeline واضح.

استخدم grep -q عندما لا تحتاج طباعة السطر، بل تريد فقط معرفة هل يوجد تطابق. هذه الصيغة ممتازة داخل if. أما إذا كنت تريد عرض السطور، فاستخدم grep "ERROR" app.log. تذكر أن grep يرجع status يعبّر عن وجود التطابق، لذلك عدم وجود النص ليس دائماً خطأ؛ أحياناً هو نتيجة طبيعية.

عند البحث عن نص يأتي من متغير، اقتبس المتغير. وإذا كان النص قد يحتوي رموز regex وأنت تريد بحثاً حرفياً، استخدم grep -F. هذا يمنع تفسير النقطة أو الأقواس كأنماط.

مثال عملي

script.sh

في سكربت حقيقي، يمكن أن يكون المصدر ملفاً: grep "ERROR" "$log_file". لا تكتب اسم الملف بدون اقتباس.

متى لا تستخدم grep؟

إذا كان الشرط بسيطاً على متغير واحد، مثل هل النص يحتوي كلمة، يمكن استخدام [[ "$text" == *word* ]]. grep مفيد عندما يكون المصدر سطوراً كثيرة أو ملفاً أو pipeline.

تحذير: خيار -P (Perl-compatible regex) متاح في GNU grep على Linux، لكنه غير موجود في BSD grep على macOS الافتراضي. إذا كتبت grep -P '\d+' فسيعمل على Linux ويفشل على macOS. للأنماط المحمولة استخدم -E (extended regex) مع [0-9]+ بدلاً من \d.

تحدي — Challenge