بسم الله
الرحمن الرحيم
الأداة 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 و يفصل بينها حرف مسافة واحد على الأقل أو أكثر , و
ستكون المعطيات كالتالي :
-
hi hello
-
hi hello
-
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 , كما تستطيع استخدام
التعبيرات السابقة في هذا الأمر .
شكرا كل الشكر
ردحذففلم اجد مصادر عربية لشرح الاوامر الا القليل
لا شكر على الواجب
حذفو أذا لم كان عندك أي استفسار عن أي أمر و لم تجد أرجو أن تبلغني
Thanks For Ever
ردحذفشكرا وجزاك الله خير واتمنى تكتب لنا عن الاوامر الاكثر اهميه واستخداما بنفس الشرح
ردحذفشششكرا
ردحذف