الأخبار التكنولوجية والاستعراضات والنصائح!

كيفية استخدام الأمر grep على نظام Linux

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

القصة وراء grep

الأمر grep مشهور في دوائر Linux و Unix لثلاثة أسباب. أولاً ، إنه مفيد للغاية. ثانيًا ، قد تكون ثروة الخيارات هائلة. ثالثًا ، تمت كتابته بين عشية وضحاها لتلبية حاجة معينة. الأولين يضربان ؛ والثالث نوعا ما.

كان كين طومسون قد استخرج وظائف البحث عن التعبير العادي من محرر محرر (وضوحا ee-dee) وأنشأ برنامجًا صغيرًا – لاستخدامه الخاص – للبحث في الملفات النصية. اتصل رئيس قسمه في Bell Labs ، Doug McIlroy ، بطومسون ووصف المشكلة التي كان يواجهها أحد زملائه ، Lee McMahon.

حاول ماكماهون تحديد مؤلفي الأوراق الفيدرالية من خلال التحليل النصي. لقد احتاج إلى أداة يمكنها البحث عن العبارات والسلاسل في الملفات النصية. أمضى طومسون حوالي ساعة في ذلك المساء في جعل أداته أداة عامة يمكن للآخرين استخدامها ، وإعادة تسميتها grep. أخذ الاسم من سلسلة الأمر ed g / re / p ، والتي تُترجم على أنها “بحث عالمي عن التعبير العادي”.

يمكنك أن ترى طومسون يتحدث إلى بريان كيرنيغان حول ولادة جريب.

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

للبحث عن سلسلة في ملف ، مرر مصطلح البحث واسم الملف في سطر الأوامر:

يتم عرض خطوط المطابقة. في هذه الحالة ، هو سطر واحد. يتم تمييز النص المطابق. هذا لأن grep في معظم الأسماء المستعارة للتوزيعات:

الاسم المستعار grep = ‘grep –colour = auto’

لنلقِ نظرة على النتائج حيث توجد عدة صفوف متطابقة. نبحث عن كلمة “المتوسط” في ملف سجل البرنامج. نظرًا لأنه لا يمكننا تذكر ما إذا كانت الكلمة صغيرة في ملف السجل ، فإننا نستخدم الخيار -i (تجاهل الحالة):

grep -i Average geek-1.log

كيفية استخدام الأمر grep على نظام Linux 1

يتم عرض كل صف مطابق ، مع تمييز النص المطابق في كل صف.

كيفية استخدام الأمر grep على نظام Linux 2

يمكننا عرض الصفوف غير المطابقة باستخدام الخيار -v (عكس المطابقة).

grep -v Mem geek-1.log

كيفية استخدام الأمر grep على نظام Linux 3

لا يوجد تحديد لأن هذه الصفوف غير متطابقة.

كيفية استخدام الأمر grep على نظام Linux 4

يمكننا أن نتحلى بالصمت التام. يتم تمرير النتيجة إلى الصدفة كقيمة إرجاع من grep. تعني نتيجة الصفر أنه تم العثور على السلسلة ، ونتيجة واحدة تعني أنه لم يتم العثور عليها. يمكننا التحقق من رمز الإرجاع باستخدام $؟ معلمات خاصة:

grep -q متوسط ​​geek-1.log صدى $؟ grep -q wdzwdz geek-1.log صدى $؟

كيفية استخدام الأمر grep على نظام Linux 5

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

للبحث في الدلائل والأدلة الفرعية المتداخلة ، استخدم الخيار -r (العودي). لاحظ أنك لم تحدد اسم ملف في سطر الأوامر ، يجب عليك تحديد مسار. هنا نبحث في الكتالوج الحالي “.” وأية أدلة فرعية:

grep -r -i memfree.

كيفية استخدام الأمر grep على نظام Linux 6

يتضمن الإخراج اسم الدليل والملف لكل صف مطابق.

كيفية استخدام الأمر grep على نظام Linux 7

يمكننا الحصول على grep لاتباع الروابط الرمزية باستخدام الخيار -R (الانتماء العودي). لدينا رابط رمزي في هذا الدليل يسمى logs-folder. يشير إلى / home / dave / logs.

ls -l logs-folder

كيفية استخدام الأمر grep على نظام Linux 8

دعنا نكرر بحثنا الأخير باستخدام الخيار -R (اشتقاق عودي):

grep -R -i memfree.

كيفية استخدام الأمر grep على نظام Linux 9

يتم اتباع الارتباط الرمزي ويتم أيضًا البحث في الدليل الذي يشير إليه بواسطة grep.

كيفية استخدام الأمر grep على نظام Linux 10

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

بشكل افتراضي ، سيطابق grep سطرًا إذا ظهر هدف البحث في أي مكان على هذا السطر ، بما في ذلك داخل سلسلة أخرى. انظر إلى هذا المثال. سنبحث عن كلمة “مجاني”.

grep -i free geek-1.log

كيفية استخدام الأمر grep على نظام Linux 11

والنتيجة هي سطور تحتوي على السلسلة “free” بداخلها ، ولكنها ليست كلمات منفصلة. إنها جزء من السلسلة “MemFree”.

كيفية استخدام الأمر grep على نظام Linux 12

لفرض grep لمطابقة “الكلمات” المفردة فقط ، استخدم الخيار -w (كلمة regexp).

grep -w -i free geek-1.log echo $؟

كيفية استخدام الأمر grep على نظام Linux 13

لا توجد نتائج هذه المرة لأن مصطلح البحث “مجاني” لا يظهر في الملف ككلمة منفصلة.

استخدم مصطلحات بحث متعددة

يتيح لك الخيار -E (التعبير العادي الموسع) البحث عن كلمات متعددة. (يحل الخيار -E محل إصدار egrep الموقوف من grep.)

يبحث هذا الأمر عن مصطلحي بحث ، “متوسط” و “memfree”.

grep -E -w -i “average | memfree” geek-1.log

grep -E -w -i

يتم عرض جميع الصفوف المتطابقة لكل مصطلح من مصطلحات البحث.

الإخراج من grep -E -w -i

يمكنك أيضًا البحث عن مصطلحات متعددة ليست بالضرورة كلمات كاملة ، ولكن يمكن أيضًا أن تكون كلمات كاملة.

يتيح لك الخيار -e (النمط) استخدام كلمات رئيسية متعددة في سطر الأوامر. نستخدم خاصية أقواس التعبير العادي لإنشاء نمط بحث. تخبر grep بمطابقة أي من الأحرف الموجودة داخل الأقواس “[]. ” هذا يعني أن grep سيطابق إما “kB” أو “KB” عند البحث.

كيفية استخدام الأمر grep على نظام Linux 14

كلتا السلسلتين متطابقتان ، وفي الواقع تحتوي بعض الصفوف على كلا السلاسل.

كيفية استخدام الأمر grep على نظام Linux 15

مطابقة الخطوط بالضبط

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

grep -x “20-يناير – 06 15:24:35” geek-1.log

grep -x

تم العثور على الصف الفردي المطابق وعرضه.

عكس ذلك هو إظهار الأسطر غير المتطابقة فقط. يمكن أن يكون هذا مفيدًا عند عرض ملفات التكوين. التعليقات رائعة ، لكن في بعض الأحيان يكون من الصعب رؤية الإعدادات الفعلية بينها جميعًا. هنا ملف / etc / sudoers:

كيفية استخدام الأمر grep على نظام Linux 16

يمكننا تصفية أسطر التعليقات بشكل فعال مثل هذا:

sudo grep -v “https://www.wdzwdz.com/496056/how-to-use-the-grep-command-on-linux/#” / etc / sudoers

sudo grep -v

من الأسهل بكثير تحليلها.

يظهر فقط النص المطابق

قد يكون هناك وقت لا تريد فيه رؤية صف المطابقة بالكامل ، فقط النص المطابق. الخيار -o (المطابقة فقط) يفعل ذلك بالضبط.

grep -o MemFree geek-1.log

كيفية استخدام الأمر grep على نظام Linux 17

يتم تقليل العرض إلى عرض النص المطابق لمصطلح البحث فقط ، بدلاً من سطر المطابقة بالكامل.

كيفية استخدام الأمر grep على نظام Linux 18

اعتمد على القبضة

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

grep -c متوسط ​​geek-1.log

كيفية استخدام الأمر grep على نظام Linux 19

يذكر grep أن مصطلح البحث يظهر 240 مرة في هذا الملف.

يمكنك جعل grep يعرض رقم السطر لكل سطر مطابق باستخدام الخيار -n (رقم السطر).

grep -n Jan geek-1.log

كيفية استخدام الأمر grep على نظام Linux 20

يتم عرض رقم الصف لكل صف مطابق في بداية الصف.

كيفية استخدام الأمر grep على نظام Linux 21

لتقليل عدد النتائج المعروضة ، استخدم الخيار -m (العدد الأقصى). سنقتصر الإخراج على خمسة صفوف متطابقة:

grep -m5 -n Jan geek-1.log

كيفية استخدام الأمر grep على نظام Linux 22

يضيف السياق

غالبًا ما تكون القدرة على رؤية بعض الصفوف الإضافية – ربما صفوف غير متطابقة – لكل صف مطابق أمرًا مفيدًا. يمكن أن يساعدك في التمييز بين الخطوط المتطابقة التي تهتم بها.

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

grep -A 3 -x “20-Jan-06 15:24:35” geek-1.log

grep -A 3 -x

لرؤية أي سطور قبل السطر المطابق ، استخدم الخيار -B (السياق قبل).

grep -B 3 -x “20-Jan-06 15:24:35” geek-1.log

grep -B 3 -x

ولتضمين الأسطر من قبل وبعد سطر المطابقة ، استخدم الخيار -C (السياق).

grep -C 3 -x “20-Jan-06 15:24:35” geek-1.log

grep -C 3 -x

عرض الملفات المتطابقة

لمشاهدة أسماء الملفات التي تحتوي على مصطلح البحث ، استخدم الخيار -l (الملفات ذات المطابقة). لمعرفة ملفات التعليمات البرمجية المصدر C التي تحتوي على مراجع إلى الملف الرئيسي sl.h ، استخدم هذا الأمر:

grep -l “sl.h” * .c

grep -l

يتم سرد أسماء الملفات ، وليس الأسطر المطابقة.

الإخراج من grep -l

وبالطبع يمكننا البحث عن الملفات التي لا تحتوي على مصطلح البحث. الخيار -L (الملفات بدون تطابق) يفعل ذلك بالضبط.

grep -L “sl.h” * .c

أمسك -L

بداية ونهاية السطور

يمكننا إجبار grep على عرض المطابقات الموجودة في بداية السطر أو نهايته فقط. عامل التشغيل “^” للتعبيرات العادية يطابق بداية السطر. ستحتوي جميع الأسطر الموجودة في ملف السجل تقريبًا على مسافات ، لكننا سنبحث عن الأسطر التي تحتوي على مسافة كأول حرف لها:

grep “^” geek-1.log

اقتطف

يتم عرض الأسطر التي تحتوي على مسافة كالحرف الأول – في بداية السطر.

أمسك الإخراج

لمطابقة نهاية السطر ، استخدم عامل تشغيل التعبير العادي “$”. سنبحث عن الأسطر التي تنتهي بـ “00”.

grep “00 $” geek-1.log

اقتطف

تعرض الشاشة الأسطر التي تحتوي على “00” كأحرفها الأخيرة.

الإخراج من grep

استخدام الأنابيب مع grep

بالطبع ، يمكنك تمرير الإدخال إلى grep ، وتمرير الإخراج من grep إلى برنامج آخر ، ودمج grep في منتصف سلسلة الأنابيب.

لنفترض أننا نريد أن نرى جميع تكرارات السلسلة “ExtractParameters” في ملفات شفرة المصدر للغة C. نعلم أنه سيكون كثيرًا ، لذلك ننقل الإخراج إلى عدد أقل:

grep “ExtractParameters” * .c | أقل

اقتطف

يتم عرض النتيجة في أقل.

الإخراج من grep

يتيح لك هذا التمرير عبر قائمة الملفات واستخدام وظيفة البحث الأقل.

إذا قمنا بتوجيه الإخراج من grep إلى wc واستخدمنا الخيار -l (الأسطر) ، فيمكننا حساب عدد الأسطر في ملفات التعليمات البرمجية المصدر التي تحتوي على “ExtractParameters”. (يمكننا تحقيق ذلك باستخدام خيار grep -c (count) ، ولكن هذه طريقة رائعة لإظهار مخارج grep).

grep “ExtractParameters” * .c | مرحاض -l

اقتطف

باستخدام الأمر التالي ، نقوم بتوصيل الإخراج من ls إلى grep وتوجيه الإخراج من grep إلى الفرز. ندرج الملفات في الدليل الحالي ونختار تلك التي تحتوي على السلسلة “Aug” بداخلها ، ونفرزها حسب حجم الملف:

ls -l | grep “أغسطس” | متنوعة + 4n

ls -l |  اقتطف

دعنا نقسمها:

ls -l: قم بإجراء قائمة تنسيق طويلة للملفات باستخدام ls.grep “Aug”: حدد الأسطر من القائمة ls التي تحتوي على “Aug”. لاحظ أن هذا سيجد أيضًا الملفات التي تحتوي على “أغسطس” في أسمائها. فرز + 4 ن: فرز الإخراج من grep في العمود الرابع (حجم الملف).

نحصل على قائمة مرتبة بجميع الملفات التي تم تغييرها في أغسطس (بغض النظر عن السنة) ، بترتيب تصاعدي لحجم الملف.

grep: أقل من أمر ، أكثر من حليف

grep هو أداة رائعة تحت تصرفك. إنه من عام 1974 وما زال قوياً لأننا بحاجة إلى ما يفعله ، ولا شيء يضاهي ذلك.

اقتران grep مع بعض التعبير العادي fu يأخذها حقًا إلى المستوى التالي.