يعد الأمر "grep" في أنظمة التشغيل الحرة مثل GNU / Linux أمرًا قيمًا ومفيدًا للغاية. يأتي اسمها من العبارة الإنجليزية: "Global Regular Expression Print" وتستخدم لأداء مهمة البحث عن ومطابقة وعرض نمط بحث أو تعبير عادي لملف واحد (1) أو عدة ملفات نصية.
بشكل أساسي ، يبحث الأمر "grep" عن النمط المشار إليه في معلمات أمر الأمر ، ويطبع النتائج التي تم الحصول عليها باتباع مؤشرات معلمات الأمر.، والتي يمكن أن تكون: الشاشة أو ملف الإخراج.
مقدمة إلى الأمر "grep"
بالفعل في منشورات أخرى سابقة لنفس المدونة مثل هذه «بعض الأوامر الأساسية في ...»وقد علقنا على الاستعمال الأساسي لهذا الأمر العظيم إلا سنرى في هذا المنشور استخدامًا متوسطًا ومتقدمًا للأمر "grep" ضمن أوامر وظيفية ومفيدة يمكنها تسهيل بعض المهام الحقيقية. داخل نصوص الصدفة الخاصة بنا أو مباشرة على الجهاز لتحقيق نتيجة فورية بشأن مهمة معينة يتعين القيام بها.
أمثلة عملية
عرض موقفنا / موقعنا
طباعة محتويات الدليل الحالي باستخدام شجرة دليل رسومية:
ls -R | grep ":$" | sed -e 's/:$//' -e 's/[^-][^\/]*\//--/g' -e 's/^/ /' -e 's/-/|/'
على سبيل المثال:
قم بإنشاء كلمة مرور عشوائية بطول 30 حرفًا
قم بإنشاء سلاسل عشوائية داخل / dev / urandom ثم حدد وعرض واحد (1) باستخدام ترشيح باستخدام الأمر "grep" للأحرف الأبجدية الرقمية فقط ، مع شرط حجم أول 30 حرفًا ، مما يلغي جميع موجزات الأسطر.
strings /dev/urandom | grep -o '[[:alnum:]]' | head -n 30 | tr -d '\n'; echo
على سبيل المثال:
قم بإنشاء ملخص رسومي للاتصالات
تصور في شكل رسومي (جدول) ولخص شكل عدد اتصالات الشبكة الداخلية والخارجية التي تم الكشف عنها بواسطة أمر "netstat" للمضيف في لحظة معينة.
netstat -an | grep ESTABLISHED | awk '{print $5}' | awk -F: '{print $1}' | sort | uniq -c | awk '{ printf("%s\t%s\t",$2,$1) ; for (i = 0; i < $1; i++) {printf("*")}; print "" }'
على سبيل المثال:
يمكن استخدامه أيضًا لإنشاء جدول ملخص لعدد الاتصالات حسب نوعها ، كما هو موضح أدناه:
netstat -ant | awk '{print $NF}' | grep -v '[a-z]' | sort | uniq -c
على سبيل المثال:
ابحث عن سلسلة (نمط) داخل مسار
حدد موقع واعرض جميع تطابقات النمط في أسماء الملفات أو محتوى الملف. استخدام المعلمات لتحقيق ذلك هي: -R (التكرار للأدلة الفرعية) ، -n (إظهار أرقام أسطر المطابقات) ، -i (تجاهل الأحرف الكبيرة والصغيرة) ، -s (منع 'لا توجد رسائل "لا يمكن" اقرأ ") ، -I (تجاهل الثنائيات في البحث).
grep -RnisI *
يمكن أيضًا استخدامه بطريقة أكثر تقدمًا إذا تم استخدامه داخل موجه الأوامر باستخدام الأمر "find" لتحديد موقع نمط داخل نوع ملف محدد مسبقًا. كما هو مبين أدناه:
find /opt/MilagrOS -name "*.txt" -exec grep -RnisI "MilagrOS" {} \;
تعرف على كمية البيانات في ذاكرة RAM
هذا مفيد لمعرفة مقدار البيانات (المعلومات) التي تنتظر كتابتها على القرص الصلب بالضبط ومن الضروري فرض إعادة تشغيل أو إيقاف تشغيل الكمبيوتر.
grep ^Dirty /proc/meminfo
تعرف على عنوان IP الخاص بشبكة WAN
من المفيد دائمًا معرفة عنوان IP الخاص بشبكة WAN تلقائيًا من الجهاز ثم تمرير هذه المعلمة إلى مهمة آلية أخرى. يستخدم هذا المثال خدمة DynDNS للحصول عليه.
curl -s http://checkip.dyndns.org/ | grep -o "[[:digit:].]\+"
ضع قائمة بالمعدات المتصلة بجزء من الشبكة
باستخدام حلقة for مع الأمر "ping" وتصفية النتيجة باستخدام الأمر "grep" ، يمكننا التحقق من صحة أجهزة الكمبيوتر الخاصة بنا المتصلة بالشبكة مع تمكين خدمة ping دون الحاجة إلى أداة NMap.
for i in {1..10}; do ping -c 1 -W 1 192.168.0.$i | grep 'from'; done
على سبيل المثال:
لسرد حقل عنوان IP الذي تم تتبعه ، يمكنك استخدام هذا السطر بشكل أكثر تقدمًا ، وتصفية نتائج الأمر "grep" باستخدام الأمرين "awk" و "القطع" ، كما هو موضح أدناه:
for i in {100..110}; do ping -c 1 -W 1 192.168.0.$i | grep 'from'; done | awk '{ print $4 }' | cut -d ":" -f 1
على سبيل المثال:
هذه الأمثلة لأسطر الأوامر باستخدام الأمر grep. ويمكن استخدامها مباشرة من وحدة التحكم أو بشكل غير مباشر عن طريق إدراجها في برنامج نصي (مهمة آلية).
في المنشور التالي على Shell Scripting سنستكشف أوامر أخرى.
إذا كنت تريد معرفة المزيد عن الأمر «grep» ، فتفضل بزيارة هذا الرابط «ديبيان ويكي»وإذا كنت تريد معرفة المزيد حول البرمجة النصية في شل في مدونتنا الخاصة، يمكنك إلقاء نظرة على إصداراتنا الأخرى حول هذا الموضوع ، من خلال النقر هنا: البرمجة النصية DesdeLinux
المقال رائع شكرا جزيلا لك.
على الرحب والسعة ، إنه لمن دواعي سروري! الآن يأتي واحد مع الأمر Sed.