English | 简体中文 | 繁體中文 | Русский язык | Français | Español | Português | Deutsch | 日本語 | 한국어 | Italiano | بالعربية

أمر grep في Linux

مجمع الأوامر في Linux

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

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

النحو

grep [-abcEFGhHilLnqrsvVwxy][-A<عدد الأعمدة لعرضها>][-B<عدد السطور لعرضها>][-C<عدد السطور لعرضها>][-d<نوع العمل>][-e<نمط البحث>][-f<ملف النمط>][--help][نمط البحث][ملف أو دليل...]

الإعدادات

  • -a أو --text : لا تتجاهل البيانات الثنائية.

  • -A<عدد السطور عرضها> أو --after-context=<عدد السطور عرضها> : بالإضافة إلى عرض السطر الذي يتوافق مع النمط، أظهر محتويات السطر بعد.

  • -b أو --byte-offset : قبل عرض السطر الذي يتوافق مع النمط، أظهر رقم أول حرف في هذا السطر.

  • -B<عدد السطور عرضها> أو --before-context=<عدد السطور عرضها> : بالإضافة إلى عرض السطر الذي يتوافق مع النمط، أظهر محتويات السطر قبل.

  • -c أو --count : حساب عدد السطور التي تتوافق مع النمط.

  • -C<عدد السطور عرضها> أو --context=<عدد السطور عرضها> أو-<عدد السطور عرضها> : بالإضافة إلى عرض السطر الذي يتوافق مع النمط، أظهر محتويات السطر قبل وبعد.

  • -d <الإجراء> أو --directories=<الإجراء> : عند تحديد دليل بدلاً من ملف، يجب استخدام هذا المعامل، وإلا سيقوم grep بتقديم رسالة واستئناف العمل.

  • -e<نمط النموذج> أو --regexp=<نمط النموذج> : تحديد سطر كنمط للبحث في محتويات الملف.

  • -E أو --extended-regexp : استخدم النمط كأنماط تعميم.

  • -f<ملف القواعد> أو --file=<ملف القواعد> : تحديد ملف القواعد، يحتوي على أنماط قواعد واحدة أو أكثر، يبحث grep عن محتويات الملفات التي تتوافق مع القواعد المحددة، نمط كل سطر هو نمط قاعدة.

  • -F أو --fixed-regexp : استخدم النمط كقائمة من الأنماط الثابتة.

  • -G أو --basic-regexp : استخدم النمط كتمثيل عادي.

  • -h أو --no-filename : قبل عرض السطر الذي يتوافق مع النمط، لا أظهر اسم الملف الذي ينتمي إليه هذا السطر.

  • -H أو --with-filename : قبل عرض السطر الذي يتوافق مع النمط، أظهر اسم الملف الذي ينتمي إليه هذا السطر.

  • -i أو --ignore-case : تجاهل فرق الحروف بين الصغيرة والكبيرة.

  • -l أو --file-with-matches : قائمة بأسماء الملفات التي تتوافق محتوياتها مع النمط المحدد.

  • -L أو --files-without-match : قائمة بأسماء الملفات التي لا تتوافق محتوياتها مع النمط المحدد.

  • -n أو --line-number : قبل عرض السطر الذي يتوافق مع النمط، أظهر رقم سطر هذا السطر.

  • -o أو --only-matching : يظهر فقط جزء مطابق PATTERN.

  • -q أو --quiet أو --silent : لا عرض أي معلومات.

  • -r أو --recursive : تأثير هذا المعامل هو نفس تأثير تحديد "-d recurse".

  • -s أو --no-messages : لا عرض أي معلومات خطأ.

  • -v أو --invert-match : عرض جميع السطور التي لا تحتوي على النص الم匹配.

  • -V أو --version : عرض معلومات النسخة.

  • -w أو --word-regexp : فقط عرض الأعمدة التي تتوافق مع الكامل.

  • -x --line-regexp : فقط عرض الأعمدة التي تتوافق مع الكامل.

  • -y : تأثير هذا المعامل هو نفس تأثير تحديد "-i".

مجمع الأوامر في Linux

مثال على الإنترنت

1- البحث في مجلد الحالي عن ملفات تحتوي على نهاية file وتحتوي على النص 'test'، وطباعة السطر الذي يحتوي على هذا النص. يمكن استخدام الأمر التالي في هذه الحالة:

grep test *file

النتيجة كما يلي:

$ grep test test*  
testfile1:This a Linux testfile! #إدراج السطور التي تحتوي على حرف 'test' في ملف testfile1  
testfile_2:This is a linux testfile! #إدراج السطور التي تحتوي على حرف 'test' في ملف testfile_2  
testfile_2:Linux test #إدراج السطور التي تحتوي على حرف 'test' في ملف testfile_2

2- البحث بشكل تكراري عن ملفات تتوافق مع الشروط. على سبيل المثال، البحث في مجلد /etc/acpi وإلى مستوى أعمق من مجلداته (إذا كان هناك مجلدات فرعية) عن ملفات تحتوي على النص "update"، وطباعة محتويات السطر الذي يحتوي على هذا النص، باستخدام الأمر التالي:

grep -r update /etc/acpi

النتائج التالية:

$ grep -r update /etc/acpi  
#تحتوي على كلمة 'update' في الملف  
مجلد /etc/acpi/ac.d/85-anacron.sh: #(أشياء مثل slocate updatedb تسبب الكثير من IO.)  
بدلاً من  
مجلد /etc/acpi/resume.d/85-anacron.sh: #(أشياء مثل slocate updatedb تسبب الكثير من  
IO.) بدلاً من  
/etc/acpi/events/thinkpad-cmos:action=/usr/sbin/thinkpad-keys--update

3. البحث بالعكس. في الأمثلة السابقة تم البحث عن السطر الذي يتوافق مع الشروط وطباعته، حيث يمكن طباعة السطور التي لا تتوافق مع الشروط باستخدام معامل -v.

البحث عن السطر الذي يحتوي على test في ملف يحتوي على test، حيث يستخدم الأمر التالي:

grep -v test *test*

النتيجة كما يلي:

$ grep-v test* # البحث عن السطر الذي يحتوي على test في ملف يحتوي على test  
testfile1:helLinux!  
testfile1:Lin هو نظام تشغيل مفتوح المصدر من نوع Unix  
testfile1:Lin  
testfile_1:HELLO LINUX!  
testfile_1:LINUX هو نظام تشغيل مفتوح المصدر من نوع Unix  
testfile_1:THIS IS A LINUX TESTFILE!  
testfile_2:HELLO LINUX!  
testfile_2:Linux هو نظام تشغيل مفتوح المصدر من نوع Unix