grep، egrep، fgrep، rgrep - اطبع الأسطر التي تطابق الأنماط
ملخص
grep [خيار] ... أنماط [ملف] ...
grep [خيار] ... -e أنماط ... [ملف] ...
grep [خيار] ... -f ملف_الأنماط ... [ملف] ...
الوصف
يبحث الأمر grep عن أنماط في كل ملف. في الشكل الأول من ملخص الأمر، والذي يُستخدم إذا لم يتم تقديم أي من خياري -e أو -f، يكون المعامل الأول أنماط عبارة عن نمط واحد أو أكثر مفصولة بأحرف سطر جديد، ويطبع الأمر grep كل سطر يطابق نمطًا. عادةً ما يجب وضع الأنماط بين علامتي تنصيص عند استخدام grep في أمر shell.
يشير الملف الذي يحمل علامة "-" إلى الإدخال القياسي. إذا لم يتم إعطاء أي ملف، فإن عمليات البحث المتكررة تفحص الدليل الحالي، وتقرأ عمليات البحث غير المتكررة الإدخال القياسي.
يتضمن Debian أيضًا البرامج البديلة egrep و fgrep و rgrep. هذه البرامج هي نفسها grep -E و grep -F و grep -r على التوالي. هذه البدائل مهملة في المصدر، ولكن يوفر Debian التوافق مع الإصدارات السابقة. لأسباب تتعلق بإمكانية النقل، يُوصى بتجنب استخدام البرامج البديلة واستخدام grep مع الخيار ذي الصلة بدلاً من ذلك.
الخيارات
معلومات عامة عن البرنامج
--help عرض رسالة استخدام والخروج.
-V، --version
عرض رقم إصدار grep والخروج.
بناء جملة النمط
-E، --extended-regexp
فسّر الأنماط كتعبيرات منتظمة ممتدة (EREs، انظر أدناه).
-F، --fixed-strings
فسّر الأنماط كسلاسل ثابتة، وليس كتعبيرات منتظمة.
-G، --basic-regexp
فسّر الأنماط كتعبيرات منتظمة أساسية (BREs، انظر أدناه). هذا هو الإعداد الافتراضي.
-P، --perl-regexp
فسّر الأنماط كتعبيرات منتظمة متوافقة مع Perl (PCREs). هذا الخيار تجريبي عند دمجه مع الخيار -z (--null-data)، وقد يحذر grep -P من الميزات غير المنفذة.
التحكم في المطابقة
-e أنماط، --regexp=أنماط
استخدم أنماط كأنماط. إذا تم استخدام هذا الخيار عدة مرات أو تم دمجه مع الخيار -f (--file)، فابحث عن جميع الأنماط المعطاة. يمكن استخدام هذا الخيار لحماية نمط يبدأ بـ "-".
-f ملف، --file=ملف
احصل على الأنماط من ملف، سطر واحد لكل نمط. إذا تم استخدام هذا الخيار عدة مرات أو تم دمجه مع الخيار -e (--regexp)، فابحث عن جميع الأنماط المعطاة. يحتوي الملف الفارغ على صفر أنماط، وبالتالي لا يطابق أي شيء. إذا كان الملف هو -، فاقرأ الأنماط من الإدخال القياسي.
-i، --ignore-case
تجاهل الفروق بين الأحرف الكبيرة والصغيرة في الأنماط والبيانات المدخلة، بحيث تتطابق الأحرف التي تختلف فقط في حالة الأحرف.
--no-ignore-case
لا تتجاهل الفروق بين الأحرف الكبيرة والصغيرة في الأنماط والبيانات المدخلة. هذا هو الإعداد الافتراضي. هذا الخيار مفيد لتمريره إلى برامج shell التي تستخدم بالفعل -i، لإلغاء تأثيرها لأن الخيارين يعطلان بعضهما البعض.
-v, --invert-match
يعكس معنى المطابقة، لتحديد الأسطر غير المطابقة.
-w, --word-regexp
حدد فقط تلك الأسطر التي تحتوي على تطابقات تشكل كلمات كاملة. الشرط هو أن تكون السلسلة المطابقة إما في بداية السطر، أو مسبوقة بحرف غير حرف من حروف الكلمة. وبالمثل، يجب أن تكون إما في نهاية السطر أو متبوعة بحرف غير حرف من حروف الكلمة. أحرف الكلمة هي الأحرف والأرقام والشرطة السفلية. هذا الخيار ليس له أي تأثير إذا تم تحديد الخيار -x أيضًا.
-x, --line-regexp
حدد فقط تلك التطابقات التي تتطابق تمامًا مع السطر بأكمله. بالنسبة لنمط التعبير العادي، هذا يشبه وضع النمط بين قوسين ثم إحاطته بـ ^ و $.
التحكم العام في الإخراج
-c, --count
يقوم بإيقاف الإخراج العادي؛ بدلاً من ذلك، اطبع عدد الأسطر المطابقة لكل ملف إدخال. مع الخيار -v، --invert-match (انظر أعلاه)، اطبع عدد الأسطر غير المطابقة.
--color[=WHEN], --colour[=WHEN]
أحط السلاسل المطابقة (غير الفارغة) والأسطر المطابقة وأسطر السياق وأسماء الملفات وأرقام الأسطر وإزاحات البايت والفواصل (للحقول ومجموعات أسطر السياق) بتسلسلات هروب لعرضها بألوان على الجهاز الطرفي. يتم تحديد الألوان بواسطة متغير البيئة GREP_COLORS. WHEN هي never أو always أو auto.
-L, --files-without-match
يقوم بإيقاف الإخراج العادي؛ بدلاً من ذلك، اطبع اسم كل ملف إدخال لا يتم طباعة أي إخراج منه عادةً.
-l, --files-with-matches
يقوم بإيقاف الإخراج العادي؛ بدلاً من ذلك، اطبع اسم كل ملف إدخال الذي سيتم طباعة إخراج منه عادةً. يتوقف فحص كل ملف إدخال عند أول تطابق.
-m NUM, --max-count=NUM
توقف عن قراءة ملف بعد NUM من الأسطر المطابقة. إذا كان NUM صفرًا، يتوقف grep على الفور دون قراءة الإدخال. يتم التعامل مع NUM بقيمة -1 على أنه لانهائي ولا يتوقف grep؛ هذا هو الإعداد الافتراضي. إذا كان الإدخال هو الإدخال القياسي من ملف عادي، وتم إخراج NUM من الأسطر المطابقة، فإن grep يضمن أن يكون الإدخال القياسي في موضع بعد السطر المطابق الأخير مباشرةً قبل الخروج، بغض النظر عن وجود أسطر سياق لاحقة. يسمح هذا لعملية استدعاء باستئناف البحث. عندما يتوقف grep بعد NUM من الأسطر المطابقة، فإنه يقوم بإخراج أي أسطر سياق لاحقة. عند استخدام الخيار -c أو --count أيضًا، لا يقوم grep بإخراج عدد أكبر من NUM. عند استخدام الخيار -v أو --invert-match أيضًا، يتوقف grep بعد إخراج NUM من الأسطر غير المطابقة.
-o, --only-matching
اطبع فقط الأجزاء المطابقة (غير الفارغة) من سطر مطابق، مع كل جزء من هذه الأجزاء في سطر إخراج منفصل.
-q, --quiet, --silent
صامت؛ لا تكتب أي شيء إلى الإخراج القياسي. اخرج على الفور بحالة صفر إذا تم العثور على أي تطابق، حتى في حالة اكتشاف خطأ. انظر أيضًا الخيار -s أو --no-messages.
-s, --no-messages
يقوم بإخماد رسائل الخطأ المتعلقة بالملفات غير الموجودة أو التي لا يمكن قراءتها.
التحكم في بادئة سطر الإخراج
-b, --byte-offset
اطبع إزاحة البايت (تبدأ من الصفر) داخل الملف المدخل قبل كل سطر من الإخراج. إذا تم تحديد -o (--only-matching)، فاطبع إزاحة الجزء المطابق نفسه.
-H, --with-filename
اطبع اسم الملف لكل تطابق. هذا هو الإعداد الافتراضي عندما يكون هناك أكثر من ملف واحد للبحث فيه. هذا امتداد GNU.
-h, --no-filename
قم بإخفاء بادئة أسماء الملفات في الإخراج. هذا هو الإعداد الافتراضي عندما يكون هناك ملف واحد فقط (أو الإدخال القياسي فقط) للبحث فيه.
--label=LABEL
اعرض الإدخال الذي يأتي فعليًا من الإدخال القياسي على أنه يأتي من الملف المسمى LABEL. يمكن أن يكون هذا مفيدًا للأوامر التي تقوم بتحويل محتويات الملف قبل البحث فيها، على سبيل المثال: gzip -cd foo.gz | grep --label=foo -H 'some pattern'. انظر أيضًا الخيار -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 NUM, --after-context=NUM
اطبع NUM من الأسطر اللاحقة بعد الأسطر المطابقة. ضع سطرًا يحتوي على فاصل المجموعة (--) بين المجموعات المتتالية من التطابقات. مع خياري -o أو --only-matching، لا يكون لهذا أي تأثير ويتم إصدار تحذير.
-B NUM, --before-context=NUM
اطبع NUM من الأسطر السابقة قبل الأسطر المطابقة. ضع سطرًا يحتوي على فاصل المجموعة (--) بين المجموعات المتتالية من التطابقات. مع خياري -o أو --only-matching، لا يكون لهذا أي تأثير ويتم إصدار تحذير.
-C NUM, -NUM, --context=NUM
اطبع NUM من أسطر السياق. ضع سطرًا يحتوي على فاصل المجموعة (--) بين المجموعات المتتالية من التطابقات. مع خياري -o أو --only-matching، لا يكون لهذا أي تأثير ويتم إصدار تحذير.
--group-separator=SEP
عند استخدام الخيارات -A أو -B أو -C، اطبع SEP بدلاً من -- بين مجموعات الأسطر.
--no-group-separator
عند استخدام الخيارات -A أو -B أو -C، لا تطبع فاصلًا بين مجموعات الأسطر.
تحديد الملفات والدلائل
-a، --text
تعامل مع ملف ثنائي كما لو كان ملفًا نصيًا؛ هذا يعادل الخيار --binary-files=text.
--binary-files=TYPE
إذا أشار محتوى الملف أو بيانات التعريف الخاصة به إلى أن الملف يحتوي على بيانات ثنائية، فافترض أن
نوع الملف هو TYPE. تشير البايتات غير النصية إلى البيانات الثنائية؛ إما أن تكون هذه البايتات عبارة عن
بايتات إخراج مُرمَّزة بشكل غير صحيح للغة الحالية، أو بايتات إدخال فارغة عندما لا يتم تحديد الخيار -z.
افتراضيًا، يكون TYPE هو binary، ويقوم grep بإيقاف الإخراج بعد اكتشاف بيانات ثنائية فارغة في الإدخال،
ويقوم بإيقاف إخراج الأسطر التي تحتوي على بيانات مرمَّزة بشكل غير صحيح. عندما يتم إيقاف بعض الإخراج،
يقوم grep بإضافة رسالة إلى الخطأ القياسي تفيد بأن ملفًا ثنائيًا يطابق.
إذا كان TYPE هو without-match، عندما يكتشف grep بيانات ثنائية فارغة في الإدخال، فإنه يفترض أن
بقية الملف لا تطابق؛ هذا يعادل الخيار -I.
إذا كان TYPE هو text، يقوم grep بمعالجة ملف ثنائي كما لو كان ملفًا نصيًا؛ هذا يعادل الخيار -a.
عندما يكون النوع binary، قد يعامل grep البايتات غير النصية كفواصل أسطر حتى بدون الخيار -z.
وهذا يعني أن اختيار binary مقابل text يمكن أن يؤثر على ما إذا كان النمط يطابق ملفًا أم لا.
على سبيل المثال، عندما يكون النوع binary، قد يطابق النمط q$ الحرف q متبوعًا مباشرةً ببايت فارغ،
حتى لو لم يتم مطابقته عندما يكون النوع text. على العكس من ذلك، عندما يكون النوع binary، قد لا يطابق
النمط . (نقطة) بايتًا فارغًا.
تحذير: قد ينتج الخيار -a نصوصًا ثنائية غير مفهومة، والتي قد يكون لها آثار جانبية سيئة إذا كان
الإخراج عبارة عن طرفية، وإذا قامت مشغِّلة الطرفية بتفسير بعضها على أنها أوامر. من ناحية أخرى،
عند قراءة الملفات التي تكون ترميزاتها النصية غير معروفة، قد يكون من المفيد استخدام -a أو تعيين
LC_ALL='C' في البيئة، وذلك للعثور على المزيد من التطابقات حتى لو كانت هذه التطابقات غير آمنة للعرض المباشر.
-D ACTION، --devices=ACTION
إذا كان ملف الإدخال جهازًا أو FIFO أو مقبسًا، فاستخدم ACTION لمعالجته. افتراضيًا، تكون ACTION هي read،
مما يعني أنه تتم قراءة الأجهزة تمامًا كما لو كانت ملفات عادية. إذا كانت ACTION هي skip، فسيتم تخطي
الأجهزة بصمت.
-d ACTION، --directories=ACTION
إذا كان ملف الإدخال دليلًا، فاستخدم ACTION لمعالجته. افتراضيًا، تكون ACTION هي read، أي تتم قراءة
الدلائل تمامًا كما لو كانت ملفات عادية. إذا كانت ACTION هي skip، فسيتم تخطي الدلائل بصمت.
إذا كانت ACTION هي 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). في GNU grep، التعبيرات النمطية الأساسية والموسعة هي مجرد ترميزات مختلفة لنفس وظائف مطابقة الأنماط. في تطبيقات أخرى، عادةً ما تكون التعبيرات النمطية الأساسية أقل قوة من التعبيرات الموسعة، على الرغم من أنه في بعض الأحيان يكون العكس هو الصحيح. الوصف التالي ينطبق على التعبيرات النمطية الموسعة؛ يتم تلخيص الاختلافات للتعبيرات النمطية الأساسية لاحقًا. تحتوي التعبيرات النمطية المتوافقة مع بيرل على وظائف مختلفة، وهي موثقة في pcre2syntax(3) و pcre2pattern(3)، ولكنها تعمل فقط إذا تم تمكين دعم PCRE.
الوحدات الأساسية هي التعابير النمطية التي تطابق حرفًا واحدًا. معظم الأحرف، بما في ذلك جميع الأحرف والأرقام، هي تعابير نمطية تطابق نفسها. يمكن اقتباس أي حرف خاص ذي معنى خاص عن طريق وضعه في بداية الحرف بشرطة مائلة للخلف.
الحرف النقطة . يطابق أي حرف واحد. لم يتم تحديده ما إذا كان يطابق خطأ في الترميز.
فئات الأحرف وتعبيرات الأقواس
تعبير الأقواس هو قائمة بالأحرف محاطة بقوسين [ و ]. يطابق أي حرف واحد في تلك القائمة. إذا كان الحرف الأول في القائمة هو علامة الإقحام ^، فإنه يطابق أي حرف ليس في القائمة؛ لم يتم تحديده ما إذا كان يطابق خطأ في الترميز. على سبيل المثال، التعبير النمطي [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} يتم مطابقة العنصر السابق مرة واحدة على الأقل، ولكن لا يزيد عن 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). يعرض الأمر shell locale -a اللغات المحلية المتاحة حاليًا.
GREP_COLORS
يتحكم في كيفية قيام خيار --color بتمييز الإخراج. قيمته هي قائمة مفصولة بنقطتين من القدرات التي تكون قيمتها الافتراضية ms=01;31:mc=01;31:sl=:cx=:fn=35:ln=32:bn=32:se=36 مع حذف القدرات المنطقية rv و ne (أي، false). القدرات المدعومة هي:
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) في كل مرة تنتهي فيها عنصر ملون. هذا ضروري على المحطات الطرفية التي لا تدعم EL. كما أنه مفيد على المحطات الطرفية التي لا تنطبق عليها القدرة المنطقية back_color_erase (bce)، عندما لا تؤثر الألوان المحددة على الخلفية، أو عندما يكون EL بطيئًا جدًا أو يتسبب في الكثير من الوميض. الافتراضي هو خطأ (أي، يتم حذف القدرة).
لاحظ أن إمكانيات القيم المنطقية ليس لها جزء =.... يتم حذفها (أي، false افتراضيًا) وتصبح true عند تحديدها.
راجع قسم "تحديد الشكل الرسومي" (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.
^ C_ALL, LC_COLLATE, LANG
تحدد هذه المتغيرات الإعدادات المحلية لفئة LC_COLLATE، والتي تحدد تسلسل التجميع المستخدم لتفسير التعبيرات النطاقية مثل [a-z].
^ C_ALL, LC_CTYPE, LANG
تحدد هذه المتغيرات الإعدادات المحلية لفئة LC_CTYPE، والتي تحدد نوع الأحرف، على سبيل المثال، أي الأحرف تعتبر مسافات. تحدد هذه الفئة أيضًا ترميز الأحرف، أي ما إذا كان النص مشفرًا باستخدام UTF-8 أو ASCII أو ترميز آخر. في الإعدادات المحلية C أو POSIX، يتم ترميز جميع الأحرف كبايت واحد، وكل بايت هو حرف صالح.
^ C_ALL, LC_MESSAGES, LANG
تحدد هذه المتغيرات الإعدادات المحلية لفئة LC_MESSAGES، والتي تحدد اللغة التي يستخدمها grep للرسائل. تستخدم الإعدادات المحلية C الافتراضية رسائل باللغة الإنجليزية الأمريكية.
^ OSIXLY_CORRECT
إذا تم تعيينه، فإن grep يتصرف كما يتطلبه POSIX؛ وإلا، يتصرف grep بشكل مشابه لبرامج GNU الأخرى. يتطلب POSIX أنه يجب التعامل مع الخيارات التي تتبع أسماء الملفات كملفات؛ بشكل افتراضي، يتم تبديل هذه الخيارات إلى مقدمة قائمة المعاملات ويتم التعامل معها كخيارات. بالإضافة إلى ذلك، يتطلب POSIX أنه يجب تشخيص الخيارات غير المعروفة على أنها "غير قانونية"، ولكن نظرًا لأنها ليست حقًا مخالفة للقانون، فإن الإعداد الافتراضي هو تشخيصها على أنها "غير صالحة".
ملاحظات
يتم الحفاظ على هذه الصفحة الويب بشكل متقطع فقط؛ غالبًا ما تكون الوثائق الكاملة أكثر حداثة.
حقوق النشر
حقوق النشر 1998-2000، 2002، 2005-2025 مؤسسة البرمجيات الحرة.
هذا برنامج مجاني؛ راجع المصدر للحصول على شروط النسخ. لا توجد ضمانات؛ حتى لـ "قابلية التسويق" أو "الملاءمة لغرض معين".
الأخطاء
الإبلاغ عن الأخطاء
أرسل تقارير الأخطاء عبر البريد الإلكتروني إلى عنوان الإبلاغ عن الأخطاء. يتوفر أرشيف للبريد الإلكتروني ومتتبع للأخطاء.
الأخطاء المعروفة
قد يؤدي عدد التكرارات الكبير في البنية {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:/* تعريفات ونماذج أولية لـ argmatch.c
السطر الوحيد الذي يطابق هو السطر 1 من argmatch.h. لاحظ أن بناء الجملة المستخدم في النمط يختلف عن بناء الجملة المستخدم في مطابقة أسماء الملفات بواسطة shell.
انظر أيضًا
صفحات الدليل العادية
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)
التوثيق الكامل
يتوفر دليل كامل. إذا كانت برامج info و grep مثبتة بشكل صحيح في موقعك، فيجب أن يمنحك الأمر
info grep
إمكانية الوصول إلى الدليل الكامل.