إتقان Linux grep: دليل شامل

2024-07-12

المقدمة

نظرة عامة على Linux grep

أمر grep، اختصار لـ "global regular expression print"، هو واحد من أقوى وأكثر الأدوات استخدامًا في سطر الأوامر في أنظمة التشغيل الشبيهة بـ Unix، بما في ذلك Linux. تم تصميمه للبحث في النصوص باستخدام أنماط، غالبًا ما تمثلها التعبيرات العادية. سواء كنت مسؤول نظام، مطور، أو مجرد مستخدم عادي، يمكن أن يعزز grep بشكل كبير قدرتك على معالجة وتحليل بيانات النصوص بكفاءة.

هدف المقال

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

أساسيات grep

ما هو grep؟

أمر grep، وهو اختصار لـ "global regular expression print"، هو أداة قوية للبحث في النصوص في أنظمة التشغيل الشبيهة بـ Unix. تم تطويره في أوائل السبعينيات بواسطة كين طومسون، وقد تم إنشاؤه في البداية لنظام التشغيل Unix ولكنه أصبح منذ ذلك الحين أداة قياسية في العديد من البيئات الأخرى. يسمح للمستخدمين بالبحث في ملفات النصوص أو الإدخال القياسي عن الأسطر التي تتطابق مع نمط محدد، مما يجعله أداة لا غنى عنها لمعالجة النصوص وتحليل البيانات.

التثبيت

تأتي معظم توزيعات Linux الحديثة مع grep مثبتًا مسبقًا. للتحقق مما إذا كان grep مثبتًا على نظامك، يمكنك استخدام الأمر التالي:

grep --version

إذا لم يكن grep مثبتًا، يمكنك تثبيته باستخدام مدير الحزم الخاص بك. على سبيل المثال:

  • على الأنظمة المعتمدة على Debian (مثل Ubuntu):
    sudo apt-get install grep
    
  • على الأنظمة المعتمدة على Red Hat (مثل Fedora):
    sudo yum install grep
    

الصيغة الأساسية

الصيغة الأساسية لأمر grep هي كما يلي:

grep [options] pattern [file...]
  • pattern: نمط النص أو التعبير العادي الذي تبحث عنه.
  • file: الملف أو الملفات التي ترغب في البحث من خلالها. إذا لم يتم تحديد أي ملف، يقرأ grep من الإدخال القياسي.

عمليات البحث البسيطة

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

grep "search_term" filename.txt

يبحث هذا الأمر عن المصطلح "search_term" في filename.txt ويطبع جميع الأسطر التي تحتوي على المصطلح.

حساسية الحالة

بشكل افتراضي، يكون grep حساسًا لحالة الأحرف. لإجراء بحث غير حساس لحالة الأحرف، استخدم الخيار -i:

grep -i "search_term" filename.txt

سيتطابق هذا الأمر مع "search_term"، "Search_Term"، "SEARCH_TERM"، وأي تباينات أخرى في الحالة.

البحث عن الكلمات الدقيقة

للبحث عن كلمات دقيقة بدلاً من الأنماط، استخدم الخيار -w:

grep -w "word" filename.txt

يضمن هذا أن "word" يتم تطابقه ككلمة كاملة، وليس كجزء من كلمة أخرى (على سبيل المثال، سيتطابق مع "word" ولكن ليس مع "sword").

عد occurrences

لعد عدد الأسطر التي تتطابق مع نمط، استخدم الخيار -c:

grep -c "search_term" filename.txt

سيخرج هذا الأمر عدد الأسطر التي تحتوي على "search_term".

عرض أرقام الأسطر

لعرض أرقام الأسطر للأسطر المطابقة، استخدم الخيار -n:

grep -n "search_term" filename.txt

سيظهر هذا الأمر كل سطر مطابق مع رقم سطره في الملف.

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

الاستخدامات الأساسية

التعبيرات العادية

واحدة من أقوى ميزات grep هي قدرته على العمل مع التعبيرات العادية. التعبيرات العادية (regex) هي تسلسلات من الأحرف التي تحدد نمط البحث. يمكن استخدامها لمطابقة الأنماط المعقدة ومعالجة النصوص.

التعبيرات العادية الأساسية

إليك بعض أنماط regex الأساسية:

  • .: تطابق أي حرف واحد باستثناء السطر الجديد.
  • *: تطابق صفر أو أكثر من العنصر السابق.
  • ^: تطابق بداية السطر.
  • $: تطابق نهاية السطر.
  • [ ]: تطابق أي واحد من الأحرف المحاطة.

على سبيل المثال:

grep "h.t" filename.txt

سيتطابق هذا مع "hat"، "hit"، "hot"، إلخ، في filename.txt.

التعبيرات العادية الممتدة

لأنماط أكثر تعقيدًا، يمكن استخدام grep مع التعبيرات العادية الممتدة باستخدام الخيار -E أو باستخدام أمر egrep (الذي يعادل grep -E).

أمثلة على التعبيرات العادية الممتدة:

  • +: تطابق واحد أو أكثر من العنصر السابق.
  • ?: تطابق صفر أو واحد من العنصر السابق.
  • |: تطابق إما النمط قبل أو النمط بعد الرمز (OR المنطقي).

على سبيل المثال:

grep -E "colou?r" filename.txt

سيتطابق هذا مع كل من "color" و "colour" في filename.txt.

عمليات البحث المتكررة

يمكن لـ grep البحث عبر الدلائل بشكل متكرر باستخدام الخيار -r. هذا مفيد بشكل خاص عندما تحتاج إلى العثور على أنماط عبر ملفات ودلائل متعددة.

مثال:

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

سيبحث هذا الأمر عن "search_term" في جميع الملفات والمجلدات الفرعية تحت /path/to/directory.

عكس المطابقات

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

مثال:

grep -v "unwanted_term" filename.txt

سيعرض هذا جميع الأسطر في filename.txt التي لا تحتوي على "unwanted_term".

أسطر السياق

أحيانًا يكون من المفيد رؤية الأسطر المحيطة بالنمط المطابق لفهم السياق. يوفر grep خيارات لعرض الأسطر قبل أو بعد أو حول الأسطر المطابقة:

  • -A [num]: يظهر [num] أسطر بعد السطر المطابق.
  • -B [num]: يظهر [num] أسطر قبل السطر المطابق.
  • -C [num]: يظهر [num] أسطر قبل وبعد السطر المطابق (السياق).

أمثلة:

grep -A 2 "search_term" filename.txt

سيظهر هذا السطر المطابق واثنين من الأسطر التي تليه.

grep -B 2 "search_term" filename.txt

سيظهر هذا السطر المطابق واثنين من الأسطر التي تسبقه.

grep -C 2 "search_term" filename.txt

سيظهر هذا السطر المطابق مع السطرين قبل وبعده.

الميزات المتقدمة

grep الممتد (egrep)

أمر egrep، الذي يعادل grep -E، يسمح باستخدام التعبيرات العادية الممتدة (EREs). توفر EREs وظائف إضافية مقارنة بالتعبيرات العادية الأساسية، مما يجعل egrep مناسبًا لمطابقة الأنماط الأكثر تعقيدًا.

أمثلة على استخدام egrep:

egrep "pattern1|pattern2" filename.txt

سيبحث هذا الأمر عن الأسطر التي تحتوي على "pattern1" أو "pattern2" في filename.txt.

البحث عن أنماط متعددة

للبحث عن أنماط متعددة في أمر grep واحد، استخدم الخيار -e:

grep -e "pattern1" -e "pattern2" filename.txt

سيعرض هذا الأسطر التي تتطابق مع "pattern1" أو "pattern2" في filename.txt.

استخدام grep مع أوامر أخرى

تظهر القوة الحقيقية لـ grep عند دمجه مع أوامر Linux الأخرى باستخدام الأنابيب (|). هذا يسمح بعمليات معالجة البيانات المعقدة وتصفية سير العمل.

مثال على تصفية الإخراج من أمر آخر:

ps aux | grep "httpd"

يُدرج هذا الأمر جميع العمليات الجارية ويصفّي الإخراج ليظهر فقط تلك التي تحتوي على "httpd".

تصفية ملفات السجل

غالبًا ما يستخدم مسؤولو النظام grep لتصفية وتحليل ملفات السجل. من خلال البحث عن أنماط معينة، يمكن للمسؤولين تحديد المشكلات بسرعة أو مراقبة الأنشطة.

مثال:

grep "ERROR" /var/log/syslog

يبحث هذا الأمر عن الأسطر التي تحتوي على "ERROR" في syslog، مما يساعد على تحديد رسائل الخطأ بسرعة.

البحث عن أنواع ملفات محددة

عند التعامل مع دلائل تحتوي على أنواع ملفات متنوعة، قد ترغب في البحث عن أنواع ملفات محددة فقط. الخيارات --include و --exclude مفيدة لهذا الغرض.

أمثلة:

grep -r --include "*.log" "search_term" /path/to/directory

يبحث هذا الأمر بشكل متكرر عن "search_term" فقط في الملفات ذات الامتداد .log ضمن الدليل المحدد.

grep -r --exclude "*.bak" "search_term" /path/to/directory

يبحث هذا الأمر بشكل متكرر عن "search_term" في جميع الملفات باستثناء تلك ذات الامتداد .bak ضمن الدليل المحدد.

تمييز المطابقات

يبرز الخيار --color النص المطابق في الإخراج، مما يسهل رؤية الأنماط في كميات كبيرة من النصوص.

مثال:

grep --color "search_term" filename.txt

سيبرز هذا "search_term" في الإخراج.

حفظ وقراءة الأنماط من الملفات

يمكن لـ grep قراءة الأنماط من ملف باستخدام الخيار -f. هذا مفيد بشكل خاص للبحث عن أنماط متعددة مخزنة في ملف.

مثال:

grep -f patterns.txt filename.txt

في هذا المثال، يحتوي patterns.txt على الأنماط التي سيتم البحث عنها، و filename.txt هو الملف الذي سيتم البحث فيه.

استخدام grep في السكربتات

يعد أتمتة المهام باستخدام السكربتات استخدامًا شائعًا لـ grep. من خلال دمج grep في سكربتات الشل، يمكنك إنشاء سير عمل أتمتة قوية.

مثال على سكربت بسيط يستخدم grep:

#!/bin/bash
# سكربت للبحث عن رسائل الخطأ في ملفات السجل

LOGFILE="/var/log/syslog"
PATTERN="ERROR"

grep $PATTERN $LOGFILE > error_messages.txt

يبحث هذا السكربت عن "ERROR" في syslog ويحفظ الأسطر المطابقة في error_messages.txt.

أمثلة عملية

تصفية ملفات السجل

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

مثال: استخراج رسائل الخطأ

grep "ERROR" /var/log/syslog

يبحث هذا الأمر عن الأسطر التي تحتوي على "ERROR" في syslog، مما يساعد على تحديد رسائل الخطأ بسرعة.

مثال: التصفية حسب التاريخ

grep "2024-07-12" /var/log/syslog

يبحث هذا الأمر عن الإدخالات من تاريخ معين، وهو مفيد لعزل السجلات من يوم معين.

الأنابيب مع أوامر أخرى

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

مثال: العثور على العمليات النشطة

ps aux | grep "httpd"

يُدرج هذا الأمر جميع العمليات الجارية ويصفّي الإخراج ليظهر فقط تلك التي تحتوي على "httpd"، وهو مفيد لمراقبة عمليات خادم الويب.

مثال: التحقق من اتصالات الشبكة

netstat -an | grep "ESTABLISHED"

يُدرج هذا الأمر جميع اتصالات الشبكة ويصفّي ليظهر فقط تلك التي تم إنشاؤها.

البحث عن أنواع ملفات محددة

عند العمل مع دلائل تحتوي على أنواع ملفات متنوعة، قد ترغب في البحث عن أنواع ملفات محددة فقط. الخيارات --include و --exclude مفيدة لهذا الغرض.

مثال: البحث عن ملفات السجل فقط

grep -r --include "*.log" "search_term" /path/to/directory

يبحث هذا الأمر بشكل متكرر عن "search_term" فقط في الملفات ذات الامتداد .log ضمن الدليل المحدد.

مثال: استبعاد ملفات النسخ الاحتياطي

grep -r --exclude "*.bak" "search_term" /path/to/directory

يبحث هذا الأمر بشكل متكرر عن "search_term" في جميع الملفات باستثناء تلك ذات الامتداد .bak ضمن الدليل المحدد.

استخدام grep مع xargs

يسمح دمج grep مع xargs بتنفيذ أوامر على نتائج البحث، مما يعزز قدرات الأتمتة.

مثال: حذف الملفات التي تحتوي على نمط معين

grep -rl "pattern_to_find" /path/to/directory | xargs rm

يجد هذا الأمر جميع الملفات التي تحتوي على "pattern_to_find" ويحذفها.

مثال: تحرير الملفات مع الأنماط الموجودة

grep -rl "pattern_to_find" /path/to/directory | xargs sed -i 's/pattern_to_find/replacement_pattern/g'

يجد هذا الأمر جميع الملفات التي تحتوي على "pattern_to_find" ويستبدلها بـ "replacement_pattern".

نصائح الأداء

يعد تحسين أداء grep أمرًا حيويًا عند التعامل مع مجموعات بيانات كبيرة.

مثال: استخدام السلاسل الثابتة

grep -F "fixed_string" filename.txt

يستخدم الخيار -F النمط كسلسلة ثابتة، وليس كـ regex، مما يسرع البحث.

مثال: استخدام fgrep للسلاسل الثابتة

fgrep "fixed_string" filename.txt

fgrep هو اختصار لـ grep -F، مصمم خصيصًا للبحث عن السلاسل الثابتة.

مثال: تحديد الإخراج

grep -m 10 "search_term" filename.txt

يحدد الخيار -m الإخراج لأوائل 10 مطابقة، وهو مفيد للملفات الكبيرة.

استخدام grep في السكربتات

يعد أتمتة المهام باستخدام السكربتات استخدامًا شائعًا لـ grep. من خلال دمج grep في سكربتات الشل، يمكنك إنشاء سير عمل أتمتة قوية.

مثال على سكربت بسيط باستخدام grep

#!/bin/bash
# سكربت للبحث عن رسائل الخطأ في ملفات السجل

LOGFILE="/var/log/syslog"
PATTERN="ERROR"

grep $PATTERN $LOGFILE > error_messages.txt

يبحث هذا السكربت عن "ERROR" في syslog ويحفظ الأسطر المطابقة في error_messages.txt.

مثال على سكربت النسخ الاحتياطي باستخدام grep

#!/bin/bash
# سكربت لنسخ الملفات التي تحتوي على نمط معين

PATTERN="important_data"
SOURCE_DIR="/path/to/source"
DEST_DIR="/path/to/backup"

grep -rl $PATTERN $SOURCE_DIR | xargs -I {} cp {} $DEST_DIR

يجد هذا السكربت جميع الملفات التي تحتوي على "important_data" في دليل المصدر وينسخها إلى دليل النسخ الاحتياطي.

نصائح الأداء

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

تحسين grep

  1. استخدام السلاسل الثابتة:

    • عندما تعرف أن نمط البحث الخاص بك هو سلسلة ثابتة وليس تعبيرًا عاديًا، استخدم الخيار -F. هذا الخيار يعامل النمط كسلسلة ثابتة، مما يجعل البحث أسرع لأنه يتجنب عبء معالجة التعبيرات العادية.
    grep -F "fixed_string" filename.txt
    
  2. تحديد عدد المطابقات:

    • إذا كنت بحاجة فقط إلى عدد قليل من المطابقات، استخدم الخيار -m لتحديد عدد الأسطر المطابقة التي يتم إرجاعها. يمكن أن يقلل هذا بشكل كبير من وقت البحث، خاصة في الملفات الكبيرة.
    grep -m 10 "search_term" filename.txt
    

    يتوقف هذا الأمر عن البحث بعد العثور على أول 10 مطابقة.

  3. استخدام البحث الثنائي:

    • يسمح الخيار -b لـ grep بإخراج موضع البايت لكل سطر مطابق. بينما لا يسرع هذا مباشرة من عمليات البحث، إلا أنه يمكن أن يكون مفيدًا للت indexing أو مهام الأداء الأخرى.
    grep -b "search_term" filename.txt
    
  4. تخطي الملفات الثنائية:

    • استخدم الخيار -I لتجاهل الملفات الثنائية، مما يمكن أن يسرع عمليات البحث في الدلائل التي تحتوي على مزيج من الملفات النصية والثنائية.
    grep -rI "search_term" /path/to/directory
    
  5. توزيع عمليات البحث:

    • إذا كان لديك معالج متعدد النواة، يمكنك توزيع عمليات البحث باستخدام أدوات مثل xargs أو parallel.
    find /path/to/directory -type f | xargs -P 4 grep "search_term"
    

    يستخدم هذا الأمر find لإدراج الملفات و xargs لتشغيل عمليات grep متعددة في وقت واحد.

استخدام fgrep للسلاسل الثابتة

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

مثال:

fgrep "fixed_string" filename.txt

استخدام الخيارات الثنائية للملفات الكبيرة

بالنسبة للملفات الكبيرة جدًا، يمكنك استخدام الخيار --binary-files لمعالجة الملفات كملفات ثنائية وتسريع البحث.

مثال:

grep --binary-files=text "search_term" largefile.bin

دمج أنماط متعددة

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

مثال:

grep -e "pattern1" -e "pattern2" filename.txt

استخدام --include و --exclude

لتحسين عمليات البحث في الدلائل التي تحتوي على أنواع ملفات متنوعة، استخدم الخيارات --include و --exclude لتحديد نطاق البحث إلى الملفات ذات الصلة فقط.

مثال:

grep -r --include "*.txt" "search_term" /path/to/directory

يبحث هذا الأمر بشكل متكرر عن "search_term" فقط في الملفات ذات الامتداد .txt.

تجنب عمليات البحث غير الضرورية

استخدم الشروط والعوامل المنطقية لتجنب عمليات البحث غير الضرورية. على سبيل المثال، استخدم find لتحديد الملفات التي تم تعديلها خلال فترة زمنية معينة قبل تطبيق grep.

مثال:

find /path/to/directory -type f -mtime -7 | xargs grep "search_term"

يجد هذا الأمر الملفات التي تم تعديلها في آخر 7 أيام ويبحث عن "search_term" فقط في تلك الملفات.

الأخطاء الشائعة واستكشاف الأخطاء وإصلاحها

بينما يعد grep أداة قوية، غالبًا ما يواجه المستخدمون بعض الأخطاء الشائعة والمشكلات. إليك بعض النصائح حول كيفية تجنب هذه الأخطاء واستكشاف المشكلات بشكل فعال.

الأخطاء الشائعة

  1. حساسية الحالة:

    • بشكل افتراضي، يكون grep حساسًا لحالة الأحرف، مما قد يؤدي إلى عدم تطابق النتائج إذا كنت غير مدرك لهذا السلوك.
    grep "search_term" filename.txt  # بحث حساس للحالة
    grep -i "search_term" filename.txt  # بحث غير حساس للحالة
    
  2. بناء جملة التعبير العادي:

    • استخدام بناء جملة التعبير العادي غير الصحيح يمكن أن يؤدي إلى نتائج غير متوقعة. تأكد من فهمك لبناء جملة regex الأساسية والممتدة عند إنشاء الأنماط.
    grep "search.term" filename.txt  # يتطابق مع "search_term"، "search term"، إلخ.
    grep "search\\.term" filename.txt  # يتطابق مع "search.term" بالضبط
    
  3. الملفات الثنائية:

    • يمكن أن يؤدي البحث في الملفات الثنائية إلى إخراج غير متوقع. استخدم الخيار -I لتخطي الملفات الثنائية.
    grep -rI "search_term" /path/to/directory
    
  4. فقدان علامات الاقتباس:

    • نسيان اقتباس الأنماط التي تحتوي على مسافات أو أحرف خاصة يمكن أن يؤدي إلى أخطاء في بناء الجملة أو مطابقة غير صحيحة.
    grep search_term filename.txt  # غير صحيح إذا كانت search_term تحتوي على مسافات
    grep "search term" filename.txt  # صحيح
    
  5. المطابقات المعكوسة:

    • الخيار -v يعكس المطابقات، مما قد يكون محيرًا إذا تم فهمه بشكل خاطئ. تأكد من أنك تنوي استبعاد الأسطر المطابقة.
    grep -v "unwanted_term" filename.txt
    

استكشاف أوامر grep

  1. الإخراج المفصل:

    • استخدم الخيار -v للحصول على إخراج أكثر تفصيلًا للمساعدة في استكشاف أمر grep الخاص بك.
    grep -v "debug_pattern" filename.txt
    
  2. أرقام الأسطر:

    • عرض أرقام الأسطر باستخدام الخيار -n لتحديد الموقع الدقيق للمطابقات.
    grep -n "search_term" filename.txt
    
  3. اختبار الأنماط:

    • اختبر تعبيراتك العادية على مجموعات بيانات أصغر للتأكد من أنها تعمل كما هو متوقع قبل تطبيقها على ملفات أكبر.
    echo "test_string" | grep "test_pattern"
    
  4. الهروب من الأحرف:

    • تأكد من أنك تهرب الأحرف الخاصة بشكل صحيح في أنماطك لتجنب أخطاء بناء الجملة.
    grep "special\*chars" filename.txt
    

استكشاف مشكلات الأداء

  1. الملفات الكبيرة:

    • بالنسبة للملفات الكبيرة، ضع في اعتبارك تقسيمها إلى أجزاء أصغر واستخدام grep على كل جزء. يمكن أن تكون أدوات مثل split مفيدة.
    split -b 100M largefile.txt part_
    grep "search_term" part_*
    
  2. تحسين الأنماط:

    • قم بتبسيط أنماط البحث الخاصة بك لتقليل وقت المعالجة. تجنب التعبيرات العادية المعقدة عندما تكون الأنماط الأبسط كافية.
    grep "simple_pattern" filename.txt
    
  3. استخدام أدوات الفهرسة:

    • بالنسبة لمجموعات البيانات الكبيرة جدًا، ضع في اعتبارك استخدام أدوات الفهرسة مثل ag (The Silver Searcher) أو ack، المصممة للبحث بشكل أسرع.
    ag "search_term" /path/to/directory
    
  4. استخدام الذاكرة:

    • تأكد من أن نظامك يحتوي على ذاكرة كافية للتعامل مع عمليات grep الكبيرة. راقب استخدام الذاكرة وقم بتعديل نهجك إذا لزم الأمر.
    free -h  # تحقق من الذاكرة المتاحة
    

Linux GREP

القراءة والموارد الإضافية

لتعزيز معرفتك ومهاراتك مع grep، ضع في اعتبارك استكشاف الموارد التالية:

  • وثائق grep الرسمية: تفاصيل شاملة حول جميع خيارات grep وميزاته.
  • التعبيرات العادية: عمق فهمك للتعبيرات العادية، التي تعتبر جزءًا لا يتجزأ من استخدام grep بشكل فعال.
  • أدوات سطر الأوامر المتقدمة: استكشاف أدوات سطر الأوامر القوية الأخرى التي تكمل grep، مثل awk و sed و find.
  • المجتمع والمنتديات: انضم إلى المجتمعات والمنتديات عبر الإنترنت حيث يمكنك طرح الأسئلة، ومشاركة المعرفة، والتعلم من الآخرين.

الأسئلة الشائعة

  • كيف يمكنني البحث عن أنماط متعددة في ملف؟

    grep -e "pattern1" -e "pattern2" filename.txt
    
  • كيف يمكنني البحث عن نمط في جميع الملفات داخل دليل، ولكن استبعاد أنواع ملفات معينة؟

    grep -r --exclude "*.bak" "pattern" /path/to/directory
    
  • ما الفرق بين grep و egrep و fgrep؟

    • grep: أداة قياسية للبحث عن الأنماط.
    • egrep: يعادل grep -E، يستخدم التعبيرات العادية الممتدة.
    • fgrep: يعادل grep -F، يبحث عن السلاسل الثابتة.