شرح الأداة grep بالأمثلة

Spread the love
بسم الله الرحمن الرحيم

الأداة grep:

grep هي أداة تستخدم للبحث في الملفات النصية أو المعطيات من برنامج أخر في نظام لينكس و أظهار الأسطر الموافقة للتعبير (Regular Expression)  إلى الشاشة أو حفظها في ملف نصي .

الاستخدام الأساسي :

  • البحث عن كلمة في ملف نصي :

grep “localhost” /etc/host
سيقوم هذا الأمر بالبحث عن الأسطر المحتوية على الكلمة “localhost” في الملف etc/host/” .
  • البحث في معطيات برنامج :

ls -l | grep “root”
بواسطة الحرف ( | ) الذي يقوم بتحويل معطيات البرنامج ls إلى البرنامج grep  الذي يبحث عن الكلمة root في المعطيات .

التعبيرات المنتظمة (Regular Expressions) :

  • البحث عن كلمة في بداية السطر :

grep “^google” /etc/host
باستخدام الإشارة  ^  سيظهر البرنامج الأسطر التي تبدأ بالكلمة google فقط .
  • البحث عن كلمة في نهاية السطر :

grep “root$” /etc/passwd
باستخدام الإشارة $ سيطبع البرنامج الأسطر التي تنتهي بالكلمة root .
  • أظهار عدد الأسطر الفارغة في الملف :

grep c “^$” /etc/passwd
بدمج الإشارتين ^$ سيبحث البرنامج عن الأسطر الفارغة ويطبع عدد الأسطر الفارغة وفي حالة  كتابة الأمر كالتالي $root^ بدون الأمر c سيطبع البرنامج الأسطر المحتوية على الكلمة root فقط .
  • استخدام أشارة النقطة ( . ) في البحث :

grep “hell.” /home/user/example.txt
يقوم البرنامج باستبدال النقطة بحرف واحد و البحث عن الكلمات المتوافقة في هذه الحالة سيبحث البرنامج عن الكلمات(hello,hell1,hellg,….) .

 

  • استخدام أشارة النجمة ( * ) في البحث :

ls -l |grep “*.txt”
تختلف هذه الإشارة عن سابقتها في أنها لا تحدد عدد الأحرف ,ففي الأمر السابق قمنا بتحويل معطيات الأمر ls إلى البرنامج وباستخدام ( * ) سيطبع البرنامج الملفات المنتهية بالامتداد txt كالتالي (a.txt, abc.txt , ab1.txt , aaa111.txt,…..).

 

  • استخدام أشارة النجمة ( +\ ) في البحث :

grep “hi \+hello” input.txt
ستعرض هذه الإشارة الأسطر التي تحتوي على الكلمتين  hi و hello و يفصل بينها حرف مسافة واحد على الأقل أو أكثر , و ستكون المعطيات كالتالي :
  1. hi hello
  2. hi      hello
  3. hi   hello
و تستطيع وضع أي حرف بدل محرف المسافة كالتالي :
 
grep “hih\+hello” input.txt
.(hihhello,hihhhhello,….) و ستكون النتائج كالتالي
 
  • البحث عن النصوص المحتوية على الإشارات الخاصة بالبحث :

grep 127\.1\.1\.1 /etc/hosts
لكي تستطيع البحث عن الكلمات المحتوية على الإشارات الخاصة بالبحث (*,.) يجب أن تسبقها بالإشارة (\), كما في الأمر السابق حيث سنبحث عن عنوان الأي بي :127.1.1.1   .
  • البحث ضمن مدى معين من الأحرف باستخدام [ ] :

grep “user[1-5]” input.txt
grep “user[a-zA-Z]” input.txt
grep “user[acey123]” input.txt
في المثال الأول سيقوم البرنامج بعرض الكلمة user المنهية بالأرقام برقم واحد من مجموعة الأرقام 1 إلى 5 كالتالي (user1,user2,….), أما في المثال الثاني سيعرض البرنامج الكلمة user المنتهي بحرف واحد من المجموعة a إلى z و A ألى Z , و في المثال الأخير قمنا بتحديد الأحرف بشكل فردي من المجموعة الحروف التالية (a,c,e,y,1,2,3) التي ستكون في نهاية الكلمة user.
  • استخدام التعليمة {\}\ :

grep “A\{2,5\}” input.txt
سيقوم هذا الأمر بالبحث عن الأسطر المحتوية على مجموعة تتكون من حرفين A ألى خمس أحرف كحد أقصى كالتالي (AA,AAA,..) , تستطيع دمج هذه التعليمة مع التعليمة “[]” كالتالي :
grep “[0-9]\{9\}” input.txt
grep “th[a-z]\{2,5\}” input.txt
grep “h\{3,}” input.txt
grep “h\{,5}” input.txt
في المثال الأول سيقوم البرنامج بالبحث عن الأرقام المكونة من 9 أرقام تلاحظ أننا وضعنا رقم واحد في الإشارة \{\}” , أما في المثال الثاني سيبحث البرنامج عن الكلمات التي تبدأ بالحرفين th وتنتهي بحرفين أو خمس حروف على الأكثر , أما في المثال الثالث سيبحث البرنامج عن الكلمات التي تبدأ بالحرف h وتتكون من حرفين على الأقل أو أكثر , لاحظ كيف قمنا بكتابة الأمر , أما المثال الأخير فالبرنامج سيبحث عن كلمة تتكون من 5 أحرف على الأكثر .
  • عرض الأسطر التي لا تحتوي على كلمة معينة :

grep v user1 input.txt
لعرض الأسطر التي لا تحتوي على الكلمة user1 يجب فقط أن تضيف المعامل vبعد الأمر grep , كما تستطيع استخدام التعبيرات السابقة في هذا الأمر .

الكاتب geek4arab

geek4arab

مواضيع متعلقة

التعليقات مغلقة