مثال على استخدامات Linux grep Command

المقدمة

يتم استخدام الأمر grep Linux كطريقة لتصفية الإدخال.

يرمز GREP إلى "طابعة التعبير العادية العالمية" ومن ثم لاستخدامها بشكل فعال ، يجب أن يكون لديك بعض المعرفة حول التعبيرات العادية.

في هذه المقالة ، سأوضح لك عددًا من الأمثلة التي ستساعدك على فهم أمر grep.

01 من 09

كيفية البحث عن سلسلة في ملف باستخدام GREP

لينكس grep القيادة.

تخيل أن لديك ملفًا نصيًا يسمى الكتب يحتوي على عناوين كتب الأطفال التالية:

للعثور على جميع الكتب التي تحتوي على الكلمة "The" في العنوان ، يمكنك استخدام البنية التالية:

grep الكتب

سيتم إرجاع النتائج التالية:

في كل حالة ، سيتم تمييز الكلمة "The".

لاحظ أن البحث حساس لحالة الأحرف حتى إذا كان أحد العناوين يحتوي على "" بدلاً من "" ثم لن يكون قد تم إرجاعه.

لتجاهل الحالة ، يمكنك إضافة المفتاح التالي:

grep الكتب - حجرة-حالة

يمكنك أيضًا استخدام -i switch على النحو التالي:

grep -i الكتب

02 من 09

البحث عن سلسلة في ملف باستخدام أحرف البدل

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

في هذا المثال ، سأوضح لك كيفية البحث عن سلسلة في ملف باستخدام أحرف البدل .

تخيل أن لديك ملفًا باسم الأماكن مع أسماء الأماكن الاسكتلندية التالية:

أبردين

أبريستوايث

aberlour

INVERURIE

إينفيرنيس

نيوبورغ

الغزلان الجديدة

غالواي الجديد

غلاسكو

أدنبرة

إذا كنت ترغب في العثور على جميع الأماكن مع inver في الاسم استخدم بناء الجملة التالي:

grep inver * places

تقف العلامة النجمية (*) على 0 أو أكثر. لذلك إذا كان لديك مكان يسمى inver أو مكان يسمى inverness ، فسيتم إرجاع كليهما.

آخر حرف بدل يمكنك استخدامه هو الفترة (.). يمكنك استخدام هذا لمطابقة حرف واحد.

grep inver.r places

سيجد الأمر أعلاه أماكن تسمى inverurie و inverary ولكن لن يجد invereerie لأنه لا يمكن أن يكون هناك سوى حرف بدل واحد بين الحرفين r كما هو محدد بواسطة الفترة المفردة.

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

على سبيل المثال ، انظر إلى قائمة أسماء النطاقات هذه

للعثور على جميع about.coms ، يمكنك البحث باستخدام البنية التالية:

grep * about * domainnames

سيسقط الأمر السابق إذا كانت القائمة تحتوي على الاسم التالي:

لذلك ، يمكنك تجربة بناء الجملة التالي:

grep * about.com domainnames

سيعمل هذا على ما يرام ما لم يكن هناك مجال بالاسم التالي:

aboutycom.com

للبحث حقًا عن عبارة about.com ، ستحتاج إلى الهروب من النقطة على النحو التالي:

grep * حول \ .com domainnames

إن البدل الأخير الذي سيظهر لك هو علامة الاستفهام التي تشير إلى صفر أو حرف واحد.

فمثلا:

grep؟ ber placenames

سيعود الأمر أعلاه aberdeen ، aberystwyth أو حتى berwick.

03 من 09

البحث عن سلاسل في بداية ونهاية الخط باستخدام grep

يسمح لك قيراط (^) ورمز الدولار ($) بالبحث عن الأنماط في بداية ونهاية الأسطر.

تخيل أن لديك ملفًا باسم كرة القدم يحمل أسماء الفرق التالية:

إذا أردت العثور على جميع الفرق التي بدأت مع مانشستر ، فستستخدم الصيغة التالية:

grep ^ فرق مانشستر

سيعود الأمر أعلاه إلى مانشستر سيتي ومانشستر يونايتد ولكن ليس مانشستر يونايتد.

بدلاً من ذلك ، يمكنك العثور على جميع الفرق المنتهية بـ United باستخدام الصيغة التالية:

grep فرق دولار

سيعود الأمر أعلاه مانشستر يونايتد ونيوكاسل يونايتد ولكن ليس مانشستر يونايتد.

04 من 09

حساب عدد المباريات باستخدام grep

إذا كنت لا ترغب في إرجاع الخطوط الفعلية التي تطابق نمط باستخدام grep ولكنك تريد فقط معرفة عدد هناك يمكنك استخدام بناء الجملة التالي:

grep - ج نمط المدخلات

إذا تمت مطابقة النمط مرتين ، فسيتم إرجاع الرقم 2.

05 من 09

العثور على جميع الشروط التي لا تتطابق باستخدام grep

تخيل أن لديك قائمة بأسماء الأماكن مع البلدان المدرجة على النحو التالي:

ربما لاحظت أن خليج كولوين لا يوجد بلد مرتبط به.

للبحث عن جميع الأماكن في بلد ما ، يمكنك استخدام بناء الجملة التالي:

grep land $ places

سوف تكون نتائج إرجاع جميع الأماكن باستثناء خليج كولوين.

من الواضح أن هذا يعمل فقط للأماكن التي تنتهي في الأرض (بالكاد العلمية).

يمكنك عكس التحديد باستخدام الصيغة التالية:

grep -v land $ places

هذا سيجد كل الأماكن التي لم تنته بالأرض.

06 من 09

كيفية البحث عن الخطوط الفارغة في الملفات باستخدام grep

تخيل أن لديك ملف إدخال يتم استخدامه بواسطة تطبيق جهة خارجية يتوقف عن قراءة الملف عندما يجد سطرًا فارغًا كما يلي:

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

يمكنك استخدام grep للبحث عن أسطر فارغة باستخدام بناء الجملة التالي:

grep ^ $ places

للأسف ، هذا ليس مفيدًا على وجه الخصوص نظرًا لأنه يعرض السطور الفارغة فقط.

يمكنك بالطبع الحصول على عدد من الخطوط الفارغة كتحقق لمعرفة ما إذا كان الملف صالحًا على النحو التالي:

grep -c ^ $ places

ومع ذلك ، سيكون من الأكثر فائدة معرفة أرقام الأسطر التي تحتوي على سطر فارغ بحيث يمكنك استبدالها. يمكنك القيام بذلك باستخدام الأمر التالي:

grep -n ^ $ places

07 من 09

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

باستخدام grep ، يمكنك تحديد أي أسطر في ملف تحتوي على أحرف كبيرة باستخدام بناء الجملة التالي:

grep '[AZ]' اسم الملف

تتيح الأقواس المربعة [] تحديد نطاق الأحرف. في المثال أعلاه ، يتطابق مع أي حرف بين A و Z.

لذلك ، لمطابقة الأحرف الصغيرة ، يمكنك استخدام بناء الجملة التالي:

grep '[az]' filename

إذا كنت تريد مطابقة الحروف فقط وليس الأرقام أو الرموز الأخرى ، فيمكنك استخدام البنية التالية:

grep '[a-zA-Z]' filename

يمكنك أن تفعل الشيء نفسه مع الأرقام على النحو التالي:

grep '[0-9]' filename

08 من 09

أبحث عن أنماط تكرار باستخدام grep

يمكنك استخدام الأقواس المتعرجة {} للبحث عن نمط متكرر.

تخيل أن لديك ملفًا به أرقام هواتف كما يلي:

أنت تعلم أن الجزء الأول من الرقم يجب أن يتكون من ثلاثة أرقام وتريد أن تجد الخطوط التي لا تطابق هذا النمط.

من المثال السابق ، تعلم أن [0-9] تقوم بإرجاع كافة الأرقام في ملف.

في هذه الحالة ، نريد أن تبدأ الأسطر التي تبدأ بثلاثة أرقام متبوعة بواصلة (-). يمكنك القيام بذلك باستخدام الصيغة التالية:

grep "^ [0-9] [0-9] [0-9] -" الأرقام

وكما نعرف من الأمثلة السابقة ، فإن قيراط (^) يعني أن الخط يجب أن يبدأ بالنمط التالي.

ستقوم [0-9] بالبحث عن أي رقم بين 0 و 9. بما أنه يتم تضمينه ثلاث مرات فإنه يتطابق مع 3 أرقام. وأخيراً هناك واصلة للدلالة على أن الواصلة يجب أن تنجح في الأرقام الثلاثة.

باستخدام الأقواس المتعرجة ، يمكنك جعل البحث أصغر كما يلي:

grep "^ [0-9] \ {3 \} -" الأرقام

تفلت الشرطة من {القوس بحيث يعمل كجزء من التعبير المعتاد ، ولكن ما يقوله هذا هو [0-9] {3} وهو ما يعني أي رقم بين 0 و 9 ثلاث مرات.

يمكن استخدام الأقواس المتعرجة كما يلي:

{5،10}

{5،}

يعني الرقم {5،10} أن الحرف الذي يتم البحث عنه يجب أن يتكرر 5 مرات على الأقل ولكن لا يزيد عن 10 بينما يعني {5}} أنه يجب تكرار الحرف 5 مرات على الأقل ولكن يمكن أن يكون أكثر من ذلك.

09 من 09

استخدام الإخراج من أوامر أخرى باستخدام grep

حتى الآن نظرنا إلى تطابق النمط داخل الملفات الفردية ولكن grep يمكن استخدام الإخراج من الأوامر الأخرى كمدخل لمطابقة النمط.

مثال عظيم على ذلك هو استخدام الأمر ps الذي يسرد العمليات النشطة.

على سبيل المثال ، قم بتشغيل الأمر التالي:

ص

سيتم عرض جميع العمليات الجارية على نظامك.

يمكنك استخدام grep للبحث عن عملية قيد التشغيل على النحو التالي:

ps -ef | grep فايرفوكس

ملخص

الأمر grep هو أمر أساسي في Linux وهو أمر يستحق التعلم لأنه سيجعل حياتك أسهل بكثير عند البحث عن الملفات والعمليات عند استخدام الجهاز.