GREP(1)

الاسم
grep - يطبع الأسطر التي تطابق الأنماط

موجز
grep [الخيار]... الأنماط [الملف]...
grep [الخيار]... -e الأنماط ... [الملف]...
grep [الخيار]... -f ملف_الأنماط ... [الملف]...

الوصف
يبحث grep عن الأنماط في كل ملف. في الصيغة الأولى للموجز، والتي تُستخدم في حال عدم وجود الخيارين -e أو -f، يكون المعامل الأول الأنماط عبارة عن نمط واحد أو أكثر تفصل بينها محارف سطر جديد، ويطبع grep كل سطر يطابق النمط. عادةً ما ينبغي وضع الأنماط بين علامتي اقتباس عند استخدام grep في أمر صدفة.

تعبير “-” مكان الملف يعني الدخل القياسي. إذا لم يُعطَ أي ملف، تفحص عمليات البحث المتكررة دليل العمل، وتقرأ عمليات البحث غير المتكررة الدخل القياسي.

الخيارات

  معلومات البرنامج العامة

--help
    يُخرج رسالة استخدام ثم يخرج.

-V، --الإصدارة
    يُخرج رقم إصدارة grep ثم يخرج.

  بناء جملة النمط

-E، --extended-regexp
    يفسر الأنماط على أنها تعبيرات نمطية ممتدة (EREs، انظر أدناه).

-F، --fixed-strings
    يفسر الأنماط على أنها سلاسل ثابتة، وليست تعبيرات نمطية.

-G، --basic-regexp
    يفسر الأنماط على أنها تعبيرات نمطية أساسية (BREs، انظر أدناه). هذا هو المبدئي.

-P، --perl-regexp
    يفسر الأنماط على أنها تعبيرات نمطية متوافقة مع بيرل (PCREs). هذا الخيار تجريبي عند دمجه مع الخيار -z (--null-data)، وقد يحذر grep -P من ميزات غير مطبقة.

  التحكم في المطابقة

-e الأنماط، --regexp=الأنماط
    يستخدم الأنماط كأنماط للبحث. إذا استُخدم هذا الخيار عدة مرات أو دُمج مع الخيار -f (--file)، فسيُبحث عن جميع الأنماط المعطاة. يمكن استخدام هذا الخيار لحماية نمط يبدأ بـ “-”.

-f ملف، --file=ملف
    يستمد الأنماط من ملف، نمط واحد لكل سطر. إذا استُخدم هذا الخيار عدة مرات أو دُمج مع الخيار -e (--regexp)، فسيُبحث عن جميع الأنماط المعطاة. الملف الفارغ لا يحتوي على أنماط، وبالتالي لا يطابق شيئاً. إذا كان ملف هو -، فستُقرأ الأنماط من الدخل القياسي.

-i، --ignore-case
    يتجاهل فروق حالة الأحرف في الأنماط وبيانات الإدخال، بحيث تتطابق المحارف التي تختلف في الحالة فقط.

--no-ignore-case
    لا يتجاهل فروق حالة الأحرف في الأنماط وبيانات الإدخال. هذا هو المبدئي. هذا الخيار مفيد للتمرير إلى سكربتات الصدفة التي تستخدم بالفعل -i، لإلغاء تأثيراتها لأن الخيارين يتجاوز أحدهما الآخر.

-v، --invert-match
    يعكس منطق المطابقة، لاختيار الأسطر غير المطابقة.

-w، --word-regexp
    يختار فقط الأسطر التي تحتوي على مطابقات تشكل كلمات كاملة. الاختبار هو أن السلسلة الفرعية المطابقة يجب أن تكون إما في بداية السطر، أو مسبوقة بمحرف ليس من مكونات الكلمة. وبالمثل، يجب أن تكون إما في نهاية السطر أو متبوعة بمحرف ليس من مكونات الكلمة. المحارف المكونة للكلمة هي الحروف والأرقام والشرطة السفلية. ليس لهذا الخيار أي تأثير إذا حُدد -x أيضاً.

-x، --line-regexp
    يختار فقط المطابقات التي تطابق السطر بالكامل تماماً. بالنسبة لنمط تعبير نمطي، هذا يشبه وضع النمط بين قوسين ثم إحاطته بـ ^ و $.

  التحكم العام في المخرجات

-c، --count
    يكتم المخرجات العادية؛ وبدلاً من ذلك يطبع عدداً للأسطر المطابقة لكل ملف إدخال. مع الخيار -v أو --invert-match (انظر أعلاه)، يعُد الأسطر غير المطابقة.

--color[=متى]، --colour[=متى]
    يحيط السلاسل المطابقة (غير الفارغة)، والأسطر المطابقة، وأسطر السياق، وأسماء الملفات، وأرقام الأسطر، وإزاحات البايت، والفواصل (للحقول ومجموعات أسطر السياق) بتسلسلات هروب لعرضها ملونة على الطرفية. تُعرّف الألوان بواسطة متغير البيئة GREP_COLORS. قيمة متى هي never (أبداً)، أو always (دائماً)، أو auto (تلقائي).

-L، --files-without-match
    يكتم المخرجات العادية؛ وبدلاً من ذلك يطبع اسم كل ملف إدخال لم يكن ليُطبع منه أي مخرج عادةً.

-l، --files-with-matches
    يكتم المخرجات العادية؛ وبدلاً من ذلك يطبع اسم كل ملف إدخال كان ليُطبع منه مخرج عادةً. يتوقف فحص كل ملف إدخال عند أول مطابقة.

-m عدد، --max-count=عدد
    يتوقف عن قراءة ملف بعد عدد من الأسطر المطابقة. إذا كان عدد صفراً، يتوقف grep فوراً دون قراءة المدخلات. يُعامل عدد بقيمة -1 كلانهاية ولا يتوقف grep؛ وهذا هو المبدئي. إذا كان الإدخال هو الدخل القياسي من ملف عادي، وأُخرجت عدد من الأسطر المطابقة، يضمن grep وضع الدخل القياسي بعد السطر المطابق الأخير مباشرة قبل الخروج، بغض النظر عن وجود أسطر سياق لاحقة. يتيح ذلك للعملية المستدعِية استئناف البحث. عندما يتوقف grep بعد عدد من الأسطر المطابقة، فإنه يخرج أي أسطر سياق لاحقة. عند استخدام الخيار -c أو --count أيضاً، لا يخرج grep عدداً أكبر من عدد. عند استخدام الخيار -v أو --invert-match أيضاً، يتوقف grep بعد إخراج عدد من الأسطر غير المطابقة.

-o، --only-matching
    يطبع فقط الأجزاء المطابقة (غير الفارغة) من سطر مطابق، مع وضع كل جزء من هذه الأجزاء في سطر مخرجات منفصل.

-q، --quiet، --silent
    هادئ؛ لا يكتب أي شيء في المخرج القياسي. يخرج فوراً بحالة صفر إذا وُجدت أي مطابقة، حتى لو اكتُشف خطأ. انظر أيضاً الخيار -s أو --no-messages.

-s، --no-messages
    يكتم رسائل الخطأ المتعلقة بالملفات غير الموجودة أو غير القابلة للقراءة.

  التحكم في بادئة سطر المخرجات

-b، --byte-offset
    يطبع إزاحة البايت (بدءاً من 0) داخل ملف الإدخال قبل كل سطر من المخرجات. إذا حُدد -o (--only-matching)، يطبع إزاحة الجزء المطابق نفسه.

-H، --with-filename
    يطبع اسم الملف لكل مطابقة. هذا هو المبدئي عندما يكون هناك أكثر من ملف واحد للبحث فيه. هذا امتداد لـ GNU.

-h، --no-filename
    يكتم تصدير أسماء الملفات في المخرجات. هذا هو المبدئي عندما يكون هناك ملف واحد فقط (أو الدخل القياسي فقط) للبحث فيه.

--label=لصيقة
    يعرض المدخلات القادمة فعلياً من الدخل القياسي كمدخلات قادمة من الملف لصيقة. يمكن أن يكون هذا مفيداً للأوامر التي تحول محتويات الملف قبل البحث، مثل: gzip -cd foo.gz | grep --label=foo -H 'نمط ما'. انظر أيضاً الخيار -H.

-n، --line-number
    صدّر كل سطر من المخرجات برقم السطر (بدءاً من 1) الخاص به في ملف الإدخال.

-T، --initial-tab
    يضمن أن المحرف الأول من محتوى السطر الفعلي يقع على علامة جدولة، بحيث يبدو محاذاة علامات الجدولة طبيعياً. هذا مفيد مع الخيارات التي تسبق مخرجاتها المحتوى الفعلي: -H و -n و -b. من أجل تحسين احتمالية أن تبدأ جميع الأسطر من ملف واحد في نفس العمود، يؤدي هذا أيضاً إلى طباعة رقم السطر وإزاحة البايت (إن وُجدا) في عرض حقل بحد أدنى من الحجم.

-Z، --null
    يخرج بايت صفري (محرف ASCII NUL) بدلاً من المحرف الذي يتبع عادةً اسم الملف. على سبيل المثال، يخرج grep -lZ بايت صفرياً بعد كل اسم ملف بدلاً من سطر جديد كالمعتاد. يجعل هذا الخيار المخرجات غير غامضة، حتى في وجود أسماء ملفات تحتوي على محارف غير عادية مثل أسطر جديدة. يمكن استخدام هذا الخيار مع أوامر مثل find -print0 و perl -0 و sort -z و xargs -0 لمعالجة أسماء ملفات عشوائية، حتى تلك التي تحتوي على محارف سطر جديد.

  التحكم في أسطر السياق

-A عدد، --after-context=عدد
    يطبع عدد من أسطر السياق اللاحقة بعد الأسطر المطابقة. يضع سطراً يحتوي على فاصل مجموعة (--) بين مجموعات المطابقات المتجاورة. مع الخيار -o أو --only-matching، ليس لهذا تأثير ويُعطى تحذير.

-B عدد، --before-context=عدد
    يطبع عدد من أسطر السياق البادئة قبل الأسطر المطابقة. يضع سطراً يحتوي على فاصل مجموعة (--) بين مجموعات المطابقات المتجاورة. مع الخيار -o أو --only-matching، ليس لهذا تأثير ويُعطى تحذير.

-C عدد، -عدد، --context=عدد
    يطبع عدد من أسطر سياق المخرجات. يضع سطراً يحتوي على فاصل مجموعة (--) بين مجموعات المطابقات المتجاورة. مع الخيار -o أو --only-matching، ليس لهذا تأثير ويُعطى تحذير.

--group-separator=فاصل
    عند استخدام -A أو -B أو -C، يطبع فاصل بدلاً من -- بين مجموعات الأسطر.

--no-group-separator
    عند استخدام -A أو -B أو -C، لا يطبع فاصلاً بين مجموعات الأسطر.

  اختيار الملفات والأدلة

-a، --text
    يعالج ملفاً ثنائياً كما لو كان نصياً؛ وهذا يعادل الخيار --binary-files=text.

--binary-files=النوع
    إذا أشارت بيانات الملف أو بياناته الوصفية إلى أن الملف يحتوي على بيانات ثنائية، يفترض أن الملف من النوع النوع. تشير البايتات غير النصية إلى بيانات ثنائية؛ وهي إما بايتات مخرجات مرمزة بشكل غير صحيح للمحلية الحالية، أو بايتات مدخلات صفرية (null) عند عدم إعطاء الخيار -z.

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

    إذا كان النوع هو without-match (دون مطابقة)، فعندما يكتشف grep بيانات ثنائية صفرية في المدخلات، يفترض أن بقية الملف لا تطابق؛ وهذا يعادل الخيار -I.

    إذا كان النوع هو text (نص)، يعالج grep الملف الثنائي كما لو كان نصياً؛ وهذا يعادل الخيار -a.

    عندما يكون النوع هو binary، قد يعامل grep البايتات غير النصية كمنهيات أسطر حتى بدون الخيار -z. وهذا يعني أن اختيار binary مقابل text يمكن أن يؤثر على ما إذا كان النمط يطابق ملفاً ما. على سبيل المثال، عندما يكون النوع هو binary، قد يطابق النمط q$ الحرف q المتبوع مباشرة ببايت صفري، على الرغم من أن هذا لا يُطابق عندما يكون النوع هو text. وعلى العكس من ذلك، عندما يكون النوع هو binary، قد لا يطابق النمط . (النقطة) بايت صفرياً.

    تحذير: قد يخرج الخيار -a نفايات ثنائية، والتي يمكن أن يكون لها آثار جانبية سيئة إذا كان المخرج طرفية وإذا فسر محرك الطرفية بعضها كأوامر. من ناحية أخرى، عند قراءة ملفات ترميزات نصوصها غير معروفة، يمكن أن يكون من المفيد استخدام -a أو ضبط LC_ALL='C' في البيئة، من أجل العثور على مزيد من المطابقات حتى لو كانت المطابقات غير آمنة للعرض المباشر.

-D إجراء، --devices=إجراء
    إذا كان ملف الإدخال جهازاً أو FIFO أو مقبساً، يستخدم إجراء لمعالجته. مبدئياً، إجراء هو read (اقرأ)، مما يعني أن الأجهزة تُقرأ كما لو كانت ملفات عادية. إذا كان إجراء هو skip (تخطَّ)، تُتخطى الأجهزة بصمت.

-d إجراء، --directories=إجراء
    إذا كان ملف المدخلات دليلًا، فاستخدم الإجراء لمعالجته. القيمة الـمبدئية لـ الإجراء هي read، أي تُقرأ الأدلة كما لو كانت ملفات عادية. وإذا كان الإجراء هو skip، فستُتخطى الأدلة بصمت. أما إذا كان الإجراء هو recurse، فتُقرأ جميع الملفات الموجودة تحت كل دليل، بشكل تكراري، مع تتبع الروابط الرمزية فقط إذا كانت في سطر الأوامر. وهذا يكافئ الخيار -r.

--exclude=GLOB
    تخطَّ أي ملف في سطر الأوامر تنتهي لاحقته بنمط يطابق GLOB، باستخدام مطابقة الرموز العامة؛ لاحقة الاسم هي إما الاسم كاملاً، أو جزء لاحق يبدأ بمحرف غير المائلة مباشرة بعد علامة مائلة (/) في الاسم. عند البحث بشكل تكراري، تخطَّ أي ملف فرعي يطابق اسمه الأساسي GLOB؛ الاسم الأساسي هو الجزء الذي يلي آخر علامة مائلة. يمكن للنمط استخدام * و ? و [...] كرموز عامة، و \ للاستشهاد بمحرف رمز عام أو محرف مائلة عكسية حرفيًا.

--exclude-from=FILE
    تخطَّ الملفات التي يطابق اسمها الأساسي أيًا من أنماط أسماء الملفات المقروءة من FILE (باستخدام مطابقة الرموز العامة كما هو موضح تحت --exclude).

--exclude-dir=GLOB
    تخطَّ أي دليل في سطر الأوامر تنتهي لاحقته بنمط يطابق GLOB. عند البحث بشكل تكراري، تخطَّ أي دليل فرعي يطابق اسمه الأساسي GLOB. تُتجاهل أي علامات مائلة لاحقة زائدة في GLOB.

-I  عالِج الملف الثنائي كما لو أنه لا يحتوي على بيانات مطابقة؛ وهذا يكافئ الخيار --binary-files=without-match.

--include=GLOB
    ابحث فقط في الملفات التي يطابق اسمها الأساسي GLOB (باستخدام مطابقة الرموز العامة كما هو موضح تحت --exclude). إذا أُعطيت خيارات متناقضة بين --include و --exclude، فسيُعتد بآخر خيار مطابق. إذا لم يطابق أي من خيارات --include أو --exclude، فسيُضم الملف ما لم يكن أول خيار من هذا النوع هو --include.

-r, --recursive
    اقرأ جميع الملفات الموجودة تحت كل دليل، بشكل تكراري، مع تتبع الروابط الرمزية فقط إذا كانت في سطر الأوامر. لاحظ أنه إذا لم يُعطَ أي ملف كمعامل، فسيبحث grep في دليل العمل الحالي. وهذا يكافئ الخيار -d recurse.

-R, --dereference-recursive
    اقرأ جميع الملفات الموجودة تحت كل دليل بشكل تكراري. تُتتبع جميع الروابط الرمزية، على عكس الخيار -r.

  خيارات أخرى

--line-buffered
    استخدم التخزين المؤقت للسطر عند الإخراج. قد يؤدي هذا إلى انخفاض في الأداء.

-U, --binary
    عامِل الملف (أو الملفات) على أنها ثنائية. مبدئيًا، في أنظمة MS-DOS و MS-Windows، يخمن grep ما إذا كان الملف نصيًا أم ثنائيًا كما هو موضح في الخيار --binary-files. إذا قرر grep أن الملف نصي، فإنه يزيل محارف CR من محتويات الملف الأصلية (لجعل التعبيرات النمطية التي تستخدم ^ و $ تعمل بشكل صحيح). يؤدي تحديد -U إلى إلغاء هذا التخمين، مما يتسبب في قراءة جميع الملفات وتمريرها إلى آلية المطابقة حرفيًا؛ إذا كان الملف نصيًا يحتوي على أزواج CR/LF في نهاية كل سطر، فسيؤدي ذلك إلى فشل بعض التعبيرات النمطية. ليس لهذا الخيار أي تأثير على منصات غير MS-DOS و MS-Windows.

-z, --null-data
    عامِل بيانات المدخلات والمخرجات كـ تسلسلات من الأسطر، ينتهي كل منها ببايت صفري (محرف ASCII NUL) بدلاً من سطر جديد. مثل الخيار -Z أو --null، يمكن استخدام هذا الخيار مع أوامر مثل sort -z لمعالجة أسماء ملفات عشوائية.

التعبيرات النمطية
التعبير النمطي هو نمط يصف مجموعة من السلاسل النصية. تُبنى التعبيرات النمطية بشكل مشابه للتعبيرات الحسابية، باستخدام معاملات متنوعة لدمج تعبيرات أصغر.

يفهم grep ثلاث نسخ مختلفة من بناء جمل التعبيرات النمطية: «الأساسية» (BRE)، و«الموسعة» (ERE)، و«بيرل» (PCRE). في grep التابع لـ GNU، لا تعد التعبيرات النمطية الأساسية والموسعة سوى تدوينات مختلفة لنفس وظيفة مطابقة الأنماط. في التطبيقات الأخرى، عادة ما تكون التعبيرات النمطية الأساسية أقل قوة من الموسعة، وإن كان العكس يحدث أحيانًا. ينطبق الوصف التالي على التعبيرات النمطية الموسعة؛ وتُلخص الاختلافات الخاصة بالتعبيرات النمطية الأساسية لاحقًا. تمتلك التعبيرات النمطية المتوافقة مع بيرل وظائف مختلفة، وهي موثقة في pcre2syntax(3) و pcre2pattern(3)، ولكنها لا تعمل إلا إذا دُعم PCRE.

لبنات البناء الأساسية هي التعبيرات النمطية التي تطابق محرفًا واحدًا. معظم المحارف، بما في ذلك جميع الحروف والأرقام، هي تعبيرات نمطية تطابق نفسها. أي محرف وصفي (meta-character) له معنى خاص يمكن الاستشهاد به بسبقه بعلامة مائلة عكسية.

تطابق النقطة . أي محرف مفرد. ولم يُحدد ما إذا كانت تطابق خطأ في الترميز.

  أصناف المحارف وتعبيرات الأقواس
تعبير الأقواس هو قائمة من المحارف المحصورة بين [ و ]. وهو يطابق أي محرف مفرد في تلك القائمة. إذا كان المحرف الأول في القائمة هو علامة الإقحام ^ فإنه يطابق أي محرف ليس في القائمة؛ ولم يُحدد ما إذا كان يطابق خطأ في الترميز. على سبيل المثال، يطابق التعبير النمطي [0123456789] أي رقم مفرد.

داخل تعبير الأقواس، يتكون تعبير النطاق من محرفين يفصل بينهما وصلة. في المحلية C الـمبدئية، يطابق أي محرف مفرد يظهر بين المحرفين في ترتيب ASCII، بما في ذلك المحرفين أنفسهما. على سبيل المثال، [a-d] يكافئ [abcd]. في المحليّات الأخرى، يكون السلوك غير محدد: قد يكون [a-d] مكافئًا لـ [abcd] أو [aBbCcDd] أو تعبير أقواس آخر، أو قد يفشل في مطابقة أي محرف، أو قد تكون مجموعة المحارف التي يطابقها غير منتظمة، أو قد يكون التعبير غير صالح. للحصول على التفسير التقليدي لتعبيرات الأقواس، يمكنك استخدام المحلية C عن طريق ضبط متغير البيئة LC_ALL على القيمة C.

أخيرًا، تُعرّف أصناف معينة من المحارف مسبقًا داخل تعبيرات الأقواس، وهي كالتالي. أسماؤها تشرح نفسها، وهي: [:alnum:]، و [:alpha:]، و [:blank:]، و [:cntrl:]، و [:digit:]، و [:graph:]، و [:lower:]، و [:print:]، و [:punct:]، و [:space:]، و [:upper:]، و [:xdigit:]. على سبيل المثال، [[:alnum:]] يعني صنف المحارف المكون من الأرقام والحروف في المحلية الحالية. في المحلية C وترميز مجموعة محارف ASCII، هذا هو نفسه [0-9A-Za-z]. (لاحظ أن الأقواس في أسماء هذه الأصناف هي جزء من الأسماء الرمزية، ويجب تضمينها بالإضافة إلى الأقواس التي تحدد تعبير الأقواس). تفقد معظم المحارف الوصفية معناها الخاص داخل تعبيرات الأقواس. لتضمين محرف ] حرفيًا، ضعه أول القائمة. وبالمثل، لتضمين محرف ^ حرفيًا، ضعه في أي مكان باستثناء الأول. وأخيرًا، لتضمين محرف - حرفيًا، ضعه في الآخر.

  الإرساء
علامة الإقحام ^ وعلامة الدولار $ هما محرفان وصفيان يطابقان على التوالي السلسلة الفارغة في بداية السطر ونهايته.

  محرف المائلة العكسية والتعبيرات الخاصة
الرموز \< و \> تطابق على التوالي السلسلة الفارغة في بداية الكلمة ونهايتها. الرمز \b يطابق السلسلة الفارغة عند حافة الكلمة، و \B يطابق السلسلة الفارغة بشرط ألا تكون عند حافة الكلمة. الرمز \w هو مرادف لـ [_[:alnum:]] و \W هو مرادف لـ [^_[:alnum:]].

  التكرار
يمكن أن يتبع التعبير النمطي واحد من عدة معاملات تكرار:
?   العنصر السابق اختياري ويُطابق مرة واحدة على الأكثر.
*   سيُطابق العنصر السابق صفرًا أو أكثر من المرات.
+   سيُطابق العنصر السابق مرة واحدة أو أكثر.
{n} يُطابق العنصر السابق n من المرات بالضبط.
{n,}
    يُطابق العنصر السابق n أو أكثر من المرات.
{,m}
    يُطابق العنصر السابق m من المرات على الأكثر. هذا امتداد لـ GNU.
{n,m}
    يُطابق العنصر السابق n من المرات على الأقل، ولكن ليس أكثر من m.

  التسلسل
يمكن دمج تعبيرين نمطيين بالتسلسل؛ التعبير النمطي الناتج يطابق أي سلسلة نصية مكونة من دمج سلسلتين فرعيتين تطابقان على التوالي التعبيرين المدمجين.

  التناوب
يمكن وصل تعبيرين نمطيين بواسطة المعامل الوسطي |; التعبير النمطي الناتج يطابق أي سلسلة تطابق أيًا من التعبيرين المتناوبين.

  الأسبقية
للتكرار الأسبقية على التسلسل، وللتسلسل بدوره الأسبقية على التناوب. يمكن حصر تعبير كامل بين قوسين لتجاوز قواعد الأسبقية هذه وتكوين تعبير فرعي.

  الإشارات المرجعية الخلفية والتعبيرات الفرعية
الإشارة المرجعية الخلفية \n ، حيث n هو رقم مفرد، تطابق السلسلة الفرعية التي طابقها مسبقًا التعبير الفرعي رقم n المحصور بين قوسين في التعبير النمطي.

  التعبيرات النمطية الأساسية مقابل الموسعة
في التعبيرات النمطية الأساسية، تفقد المحارف الوصفية ?, +, {, |, (, و ) معناها الخاص؛ استخدم بدلاً منها النسخ المسبوقة بمائلة عكسية \?, \+, \{, \|, \(, و \).

حالة الخروج
عادةً ما تكون حالة الخروج 0 إذا اختير سطر، و 1 إذا لم تُختر أي أسطر، و 2 في حال حدوث خطأ. ومع ذلك، إذا استُخدم الخيار -q أو --quiet أو --silent واختير سطر، فإن حالة الخروج تكون 0 حتى لو حدث خطأ.

البيئة
يتأثر سلوك grep بمتغيرات البيئة التالية.

تُحدد المحلية للفئة LC_foo بفحص متغيرات البيئة الثلاثة LC_ALL و LC_foo و LANG، بهذا الترتيب. أول متغير مضبوط منها هو ما يحدد المحلية. على سبيل المثال، إذا لم يُضبط LC_ALL، ولكن ضُبط LC_MESSAGES على pt_BR، فستُستخدم المحلية البرتغالية البرازيلية لفئة LC_MESSAGES. تُستخدم المحلية C إذا لم يُضبط أي من متغيرات البيئة هذه، أو إذا لم يكن فهرس المحلية مثبتًا، أو إذا لم يُجمع grep مع دعم اللغات الوطنية (NLS). يعرض أمر الصدفة locale -a المحليّات المتاحة حاليًا.

GREP_COLORS
    يتحكم في كيفية تمييز الخيار --color للمخرجات. قيمته هي قائمة مفصولة بنقطتين من الإمكانيات التي تكون قيمتها الـمبدئية ms=01;31:mc=01;31:sl=:cx=:fn=35:ln=32:bn=32:se=36 مع حذف الإمكانيتين المنطقيتين rv و ne (أي أنهما خطأ). الإمكانيات المدعومة هي كما يلي.

    sl= سلسلة SGR الفرعية لكامل الأسطر المختارة (أي الأسطر المطابقة عند حذف خيار سطر الأوامر -v، أو الأسطر غير المطابقة عند تحديد -v). ومع ذلك، إذا حُددت كل من الإمكانية المنطقية rv وخيار سطر الأوامر -v، فإنها تنطبق على أسطر السياق المطابقة بدلاً من ذلك. القيمة الـمبدئية هي فارغة (أي زوج الألوان المبدئي للطرفية).

    cx= سلسلة SGR الفرعية لكامل أسطر السياق (أي الأسطر غير المطابقة عند حذف خيار سطر الأوامر -v، أو الأسطر المطابقة عند تحديد -v). ومع ذلك، إذا حُددت كل من الإمكانية المنطقية rv وخيار سطر الأوامر -v، فإنها تنطبق على الأسطر المختارة غير المطابقة بدلاً من ذلك. القيمة الـمبدئية هي فارغة (أي زوج الألوان المبدئي للطرفية).

    rv  قيمة منطقية تعكس (تبادل) معاني الإمكانيات sl= و cx= عند تحديد خيار سطر الأوامر -v. القيمة الـمبدئية هي خطأ (أي أن الإمكانية محذوفة).

    mt=01;31
        سلسلة SGR الفرعية لمطابقة النص غير الفارغ في أي سطر مطابق (أي سطر مختار عند حذف خيار سطر الأوامر -v، أو سطر سياق عند تحديد -v). ضبط هذه القيمة يكافئ ضبط كل من ms= و mc= معًا على نفس القيمة. القيمة الـمبدئية هي نص عريض أحمر فوق خلفية السطر الحالية.

    ms=01;31
        سلسلة SGR الفرعية لمطابقة النص غير الفارغ في سطر مختار. (يُستخدم هذا فقط عند حذف خيار سطر الأوامر -v). يظل تأثير الإمكانية sl= (أو cx= إذا استُخدم rv) نشطًا عندما يبدأ مفعول هذا. القيمة الـمبدئية هي نص عريض أحمر فوق خلفية السطر الحالية.

    mc=01;31
        سلسلة SGR الفرعية لمطابقة النص غير الفارغ في سطر سياق. (يُستخدم هذا فقط عند تحديد خيار سطر الأوامر -v). يظل تأثير الإمكانية cx= (أو sl= إذا استُخدم rv) نشطًا عندما يبدأ مفعول هذا. القيمة الـمبدئية هي نص عريض أحمر فوق خلفية السطر الحالية.

    fn=35
        سلسلة SGR الفرعية لأسماء الملفات التي تسبق أي سطر محتوى. القيمة الـمبدئية هي نص أرجواني فوق خلفية الطرفية المبدئية.

    ln=32
        سلسلة SGR الفرعية لأرقام الأسطر التي تسبق أي سطر محتوى. القيمة الـمبدئية هي نص أخضر فوق خلفية الطرفية المبدئية.

    bn=32
        سلسلة SGR الفرعية لإزاحات البايت التي تسبق أي سطر محتوى. القيمة الـمبدئية هي نص أخضر فوق خلفية الطرفية المبدئية.

    se=36
        سلسلة SGR الفرعية للفواصل التي تُدرج بين حقول الأسطر المختارة (:)، وبين حقول أسطر السياق (-)، وبين مجموعات الأسطر المتجاورة عند تحديد سياق غير صفري (--). القيمة الـمبدئية هي نص سماوي فوق خلفية الطرفية المبدئية.

    ne  قيمة منطقية تمنع المسح حتى نهاية السطر باستخدام Erase in Line (EL) إلى اليمين (\33[K) في كل مرة ينتهي فيها عنصر ملون. هذا مطلوب في الطرفيات التي لا تدعم EL. وهو مفيد بخلاف ذلك في الطرفيات التي لا تنطبق عليها إمكانية terminfo المنطقية back_color_erase (bce)، أو عندما لا تؤثر ألوان التمييز المختارة على الخلفية، أو عندما يكون EL بطيئًا جدًا أو يسبب وميضًا كثيرًا. القيمة الـمبدئية هي خطأ (أي أن الإمكانية محذوفة).

    لاحظ أن الإمكانيات المنطقية ليس لها جزء =.... فهي تُحذف (أي تكون خطأ) مبدئيًا وتصبح صحيحة عند تحديدها.

    انظر قسم Select Graphic Rendition (SGR) في توثيق طرفية النصوص المستخدمة لمعرفة القيم المسموح بها ومعانيها كسمات للمحارف. قيم هذه السلاسل الفرعية هي أعداد صحيحة بالتمثيل العشري ويمكن دمجها بفواصل منقوطة. يتولى grep تجميع النتيجة في تسلسل SGR كامل (\33[...m). القيم الشائعة للدمج تشمل 1 للخط العريض، و 4 للتسطير، و 5 للوميض، و 7 للعكس، و 39 للون الأمامي المبدئي، و 30 إلى 37 للألوان الأمامية، و 90 إلى 97 للألوان الأمامية في وضع 16 لونًا، و 38;5;0 إلى 38;5;255 للألوان الأمامية في وضعي 88 لونًا و 256 لونًا، و 49 للون الخلفية المبدئي، و 40 إلى 47 لألوان الخلفية، و 100 إلى 107 لألوان الخلفية في وضع 16 لونًا، و 48;5;0 إلى 48;5;255 لألوان الخلفية في وضعي 88 لونًا و 256 لونًا.

LC_ALL, LC_COLLATE, LANG
    تحدد هذه المتغيرات المحلية لفئة LC_COLLATE، والتي تحدد تسلسل الترتيب المستخدم لتفسير تعبيرات النطاق مثل [a-z].

LC_ALL, LC_CTYPE, LANG
    تحدد هذه المتغيرات المحلية لفئة LC_CTYPE، والتي تحدد نوع المحارف، على سبيل المثال، أي المحارف تُعد مسافات بيضاء. تحدد هذه الفئة أيضًا ترميز المحارف، أي ما إذا كان النص مرموزًا بـ UTF-8 أو ASCII أو أي ترميز آخر. في المحلية C أو POSIX، تُرمّز جميع المحارف كبايت واحد وكل بايت هو محرف صالح.

LC_ALL, LC_MESSAGES, LANG
    تحدد هذه المتغيرات المحلية لفئة LC_MESSAGES، والتي تحدد اللغة التي يستخدمها grep للرسائل. تستخدم المحلية C الـمبدئية رسائل بالإنجليزية الأمريكية.

POSIXLY_CORRECT
    إذا ضُبط هذا المتغير، سيتصرف grep كما يتطلب معيار POSIX؛ وإلا، سيتصرف grep بشكل أقرب لبرامج GNU الأخرى. يتطلب معيار POSIX أن تُعامل الخيارات التي تلي أسماء الملفات كأسماء ملفات؛ مبدئيًا، تُنقل مثل هذه الخيارات إلى مقدمة قائمة المعاملات وتُعامل كخيارات. أيضًا، يتطلب معيار POSIX تشخيص الخيارات غير المعروفة على أنها «غير قانونية»، ولكن بما أنها ليست ضد القانون حقًا، فإن السلوك المبدئي هو تشخيصها على أنها «غير صالحة».

ملاحظات
تتم صيانة صفحة الدليل هذه بشكل متقطع فقط؛ وغالبًا ما تكون الوثائق الكاملة أكثر حداثة.

حقوق النسخ
حقوق النسخ 1998–2000، 2002، 2005–2025 مؤسسة البرمجيات الحرة، المحدودة.

هذا برنامج حر؛ انظر المصدر لشروط النسخ. لا يوجد أي ضمان؛ ولا حتى ضمان قابلية التسويق أو الملاءمة لغرض معين.

العلل

  الإبلاغ عن العلل
أرسل تقارير العلل بالبريد الإلكتروني إلى وهو عنوان الإبلاغ عن العلل (bug-grep@gnu.org). يتوفر أرشيف بريد إلكتروني https://lists.gnu.org/mailman/listinfo/bug-grep ومتتبع علل https://debbugs.gnu.org/cgi/pkgreport.cgi?package=grep

  العلل المعروفة
قد تتسبب أعداد التكرار الكبيرة في بنية {n,m} في استهلاك grep للكثير من الذاكرة. بالإضافة إلى ذلك، تتطلب بعض التعبيرات النمطية الغامضة الأخرى وقتًا ومساحة أسية، وقد تتسبب في نفاد ذاكرة grep.

المراجع الخلفية بطيئة جدًا، وقد تتطلب وقتًا أسيًا.

مثال
يُخرج المثال التالي موقع ومحتويات أي سطر يحتوي على “f” وينتهي بـ “.c”، ضمن جميع الملفات في الدليل الحالي التي تحتوي أسماؤها على “g” وتنتهي بـ “.h”. يُخرج الخيار -n أرقام الأسطر، وتعامل معاملة -- توسعات “*g*.h” التي تبدأ بـ “-” كأسماء ملفات وليست خيارات، ويؤدي الملف الفارغ /dev/null إلى إخراج أسماء الملفات حتى لو صادف وجود ملف واحد فقط من الشكل “*g*.h”.

    $ grep -n -- 'f.*\.c$' *g*.h /dev/null
    argmatch.h:1:/* definitions and prototypes for argmatch.c

السطر الوحيد الذي يتطابق هو السطر 1 من argmatch.h. لاحظ أن بناء جملة التعبير النمطي المستخدم في النمط يختلف عن بناء جملة المطابقة (globbing) التي تستخدمها الصدفة لمطابقة أسماء الملفات.

انظر أيضًا

  صفحات الدليل العادية
awk(1), cmp(1), diff(1), find(1), perl(1), sed(1), sort(1), xargs(1), read(2), pcre2(3), pcre2syntax(3), pcre2pattern(3), terminfo(5), glob(7), regex(7)

  الوثائق الكاملة
يتوفر دليل كامل (https://www.gnu.org/software/grep/manual/) كانت برامج info و grep مثبتة بشكل صحيح في موقعك، فإن الأمر

    info grep

سيتيح لك الوصول إلى الدليل الكامل.

ترجمة
تُرجمت هذه الصفحة من الدليل بواسطة زايد السعيدي <zayed.alsaidi@gmail.com>

هذه الترجمة هي وثيقة مجانية؛ راجع رخصة جنو العامة الإصدار 3 (https://www.gnu.org/licenses/gpl-3.0.html) أو ما بعده للاطلاع على شروط حقوق النشر. لا توجد أي ضمانات.

إذا وجدت أي أخطاء في ترجمة صفحة الدليل هذه، يرجى إرسال بريد إلكتروني إلى قائمة بريد المترجمين: kde-l10n-ar@kde.org.