البقرى
البرنامج الرئيسي الذي سنستخدمه للعمل مع التعبيرات النمطية هو برنامج Pal القديم ، البقرى. اسم "grep" مشتق فعليًا من عبارة "طباعة التعبير العادي العالمي" ، لذلك يمكننا رؤية ذلك البقرى له علاقة بالتعبيرات النمطية. المضمون، البقرى يبحث في الملفات النصية عن نص التكرار الذي يطابق تعبيرًا عاديًا محددًا ويخرج أي سطر يحتوي على تطابق مع الإخراج القياسي.
حتى الآن ، استخدمنا البقرى بسلاسل ثابتة ، مثل:
[me @ linuxbox ~] $ ls / usr / بن | grep zip
[me @ linuxbox ~] $ ls / usr / بن | grep zip
سيؤدي ذلك إلى سرد جميع الملفات الموجودة في ملف / البيرة / بن الدليل الذي تحتوي أسماؤه على السلسلة الفرعية “zip”.
• البقرى يقبل البرنامج الخيارات والحجج بهذه الطريقة:
جريب [الخيارات] رجإكس [ملف...]
أين رجإكس هو تعبير عادي.
فيما يلي قائمة بالملفات الأكثر استخدامًا البقرى الخيارات:
الجدول 19-1: خيارات grep
وصف الخيار
وصف الخيار
-i تجاهل الحالة. لا تفرق بين الأحرف الكبيرة والصغيرة. قد يتم تحديدها أيضًا - أقل من حالة.
-v مباراة معكوسة. عادة، البقرى يطبع الأسطر التي تحتوي على تطابق.
هذا الخيار يسبب البقرى لطباعة كل سطر لا يحتوي على تطابق. قد يتم تحديدها أيضًا - عكس المباراة.
-c اطبع عدد المطابقات (أو غير المطابقة إذا كان ملف -v يتم تحديد الخيار أيضًا) بدلاً من السطور نفسها. قد يتم تحديدها أيضًا --عدد.
-l اطبع اسم كل ملف يحتوي على تطابق بدلاً من الأسطر نفسها. قد يتم تحديدها أيضًا - ملفات مع مباريات.
-L مثل الخيار -l ، لكن اطبع فقط أسماء الملفات التي لا تحتوي على مطابقات. يمكن أيضًا تحديد - ملفات - بدون - تطابق.
-n بادئة كل سطر مطابق برقم السطر داخل الملف. قد يتم تحديده أيضًا - رقم الخط.
-h بالنسبة لعمليات البحث متعددة الملفات ، قم بإيقاف إخراج أسماء الملفات. قد يتم تحديدها أيضًا --لا يوجد اسم ملف.
من أجل استكشاف أكثر بشكل كامل البقرى، فلنقم بإنشاء بعض الملفات النصية للبحث:
البقرى
[me @ linuxbox ~] $ ls / bin> dirlist-bin.txt [me @ linuxbox ~] $ ls / usr / bin> dirlist-usr-bin.txt [me @ linuxbox ~] $ ls / sbin> dirlist-sbin.txt [me @ linuxbox ~] $ ls / usr / sbin> dirlist-usr-sbin.txt [me @ linuxbox ~] $ ls dirlist * .txt
dirlist-bin.txt dirlist-sbin.txt dirlist-usr-sbin.txt dirlist-usr-bin.txt
[me @ linuxbox ~] $ ls / bin> dirlist-bin.txt [me @ linuxbox ~] $ ls / usr / bin> dirlist-usr-bin.txt [me @ linuxbox ~] $ ls / sbin> dirlist-sbin.txt [me @ linuxbox ~] $ ls / usr / sbin> dirlist-usr-sbin.txt [me @ linuxbox ~] $ ls dirlist * .txt
dirlist-bin.txt dirlist-sbin.txt dirlist-usr-sbin.txt dirlist-usr-bin.txt
يمكننا إجراء بحث بسيط في قائمة الملفات لدينا مثل هذا:
[me @ linuxbox ~] $ grep bzip dirlist * .txt
dirlist-bin.txt: bzip2 dirlist-bin.txt: bzip2recover
[me @ linuxbox ~] $ grep bzip dirlist * .txt
dirlist-bin.txt: bzip2 dirlist-bin.txt: bzip2recover
في هذا المثال، البقرى يبحث في جميع الملفات المدرجة عن السلسلة بزيب والعثور على تطابقين ، كلاهما في الملف dirlist- bin.txt. إذا كنا مهتمين فقط بقائمة الملفات التي تحتوي على التطابقات بدلاً من المطابقات نفسها ، فيمكننا تحديد -l الخيار:
[me @ linuxbox ~] $ grep -l bzip dirlist * .txt
dirlist- bin.txt
[me @ linuxbox ~] $ grep -l bzip dirlist * .txt
dirlist- bin.txt
بالمقابل ، إذا أردنا فقط رؤية قائمة بالملفات التي لا تحتوي على تطابق ، فيمكننا القيام بذلك:
[me @ linuxbox ~] $ grep -L bzip dirlist * .txt
dirlist-sbin.txt dirlist-usr-bin.txt dirlist-usr-sbin.txt
[me @ linuxbox ~] $ grep -L bzip dirlist * .txt
dirlist-sbin.txt dirlist-usr-bin.txt dirlist-usr-sbin.txt