رئيسي آخر ابحث عن أي شيء باستخدام grep
آخر

ابحث عن أي شيء باستخدام grep

كيف مساهم، أجهزة لوحية 16 ديسمبر 2004 ، 4:00 مساءً بتوقيت المحيط الهادي

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



كيفية استخدام جهاز تحكم اكس بوكس ​​على الايفون

لماذا لا تستخدم Finder؟

من السهل العثور على الملفات باستخدام Finder عندما تعرف أسمائها. لكن الأمر grep موفر للوقت عندما تحاول العثور على ما هو موجود داخل الملفات. يمكنك استخدام grep بسهولة من سطر الأوامر للبحث عن نص معين ، وستحصل على نتائج في ثوانٍ. (يمكنك أيضًا استخدام grep ضمن برامج تحرير نصوص معينة.)

يوفر Finder وظيفة مماثلة: البحث عن طريق المحتوى. (اضغط على Command-F في Finder ، وحدد المحتوى في القائمة المنبثقة Search For Items Whose ، وأدخل سلسلة بحث في حقل النص.) لكن Finder يبحث فقط داخل الملفات التي قام بفهرستها ، ويتجاهل ملفات النظام المخفية ما لم تختر صراحةً البحث عن الملفات المرئية وغير المرئية وإضافة مجلد النظام إلى البحث.





يفتقر الباحث أيضًا إلى مرونة grep: في حين أنه مفيد للبحث عن كلمة معينة (على سبيل المثال ، والدن ) ، يصبح أقل فائدة عندما تريد العثور على سلسلة أطول. بحث عن والدن بوند ، ويعيد جميع الملفات التي تحتوي على أي منهما والدن أو بركة ماء.

يتيح لك استخدام grep أيضًا الوصول إلى ملفات التعبيرات العادية. تتيح لك هذه المجموعات من الأحرف والأرقام والبطاقات البدل والأحرف الخاصة الأخرى العثور على أكثر من مجرد كلمات. يمكنك البحث عن أي سلسلة من الأحرف تقريبًا: عناوين IP في ملفات السجل ؛ أرقام الهواتف في قوائم الاتصال ؛ أو سلاسل محددة تحتوي على سلسلة من الأرقام أو الأحرف أو الأحرف الأخرى. باستخدام التعبيرات العادية ، أنت مقيد فقط بخيالك.



احصل على قبضة على Grep

يبحث الأمر grep داخل ملف واحد أو عدة ملفات للسلسلة أو النص الذي تحدده. تركيبها هو: grep options search_string file....

في أبسط صوره ، تخبر grep ما الذي تبحث عنه وأين: grep AppleTalk /etc/services ، على سبيل المثال. هنا ، يمكنك إخبار grep بالبحث عن AppleTalk في ملف الخدمات الموجود في الدليل / etc. (يحتوي هذا الملف المفيد على قائمة بأرقام منافذ الشبكة للخدمات شائعة الاستخدام.) يعرض الأمر كل سطر يحتوي على سلسلة البحث الخاصة بك:

*

وما إلى ذلك وهلم جرا. يمكنك استخدام بطاقة البدل (grep Walden *) المألوفة لجعل grep يبحث في مجموعة من الملفات في دليل العمل الحالي ، كما في grep 'Walden Pond' *. يبحث هذا الأمر في جميع الملفات الموجودة في الدليل الحالي عن الكلمة والدن ، إعادة ما يلي:

-r

وما إلى ذلك وهلم جرا. كما يوضح المثال أعلاه ، يُرجع البحث العديد من التطابقات. الأول ، Walden.doc ، هو ملف Word. يستدعي الأمر grep أنواع ملفات الملكية هذه الملفات الثنائية. لا يمكنه عرض محتويات الملفات الثنائية ، ولكن يمكنه البحث داخلها وإخبارك إذا كان هناك شيء مطابق. تأتي الأمثلة التالية من ملفات النص العادي ، والتي يمكن لـ grep عرض نتائجها. ترى اسم الملف ، متبوعًا بمطابقة سلسلة البحث في سياقها.

يمكنك البحث عن أي سلسلة نصية متعددة الكلمات بإحاطة السلسلة بعلامات اقتباس فردية. على سبيل المثال ، إذا كنت تريد البحث عن العبارة والدن بوند ، ستكتب grep -r Walden ~/Documents/*.

لاحظ أن grep لا يحب فواصل أسطر Macintosh. تقوم بإرجاع أسطر تحتوي على سلسلة البحث ، لكنها لا ترى فواصل أسطر Mac مثل أي شيء آخر غير الأحرف. في مثل هذه الحالة ، يكون السطر الذي يتم إرجاعه هو الملف بأكمله ؛ يمكن أن يؤدي هذا إلى تفريغ الكثير من النص في نافذة الوحدة الطرفية.

في المثال السابق ، تم تشغيل grep في مجلد معين ، وفحص جميع الملفات التي يحتوي عليها. ماذا لو كنت تريد تشغيل grep على مجلد و مجلداته الفرعية ، أو تريد grep للبحث عن السلسلة بغض النظر عن الحالة؟ تحتاج إلى إضافة والخيارات. على سبيل المثال ، للبحث عن والدن في أي مكان في مجلد أو مجلداته الفرعية ، استخدم الخيار -r (متكرر): grep -r Walden ~/Documents/*.

صقل عمليات البحث الخاصة بك

لايجاد…استخدم هذا الخيارمثال
نص في مجلدات فرعية -w grep -w live يجد والدن في أي ملف في أي مجلد فرعي من المستندات ~ /.
الكلمة بالكامل فقط -i grep -i pond يجد فقط يعيش ؛ لا تجد كبد و الأرواح و يسكن ، وما إلى ذلك وهلم جرا.
نص غير حساس لحالة الأحرف -l grep -l Walden يجد بركة ماء و بركة ماء ، أو بركة ماء .
أسماء الملفات فقط -c grep -c Walden يبحث عن الملفات التي تحتوي على ملفات والدن ، لكنه يعرض فقط قائمة بأسماء الملفات.
عدد التكرارات فقط grep -rl Walden | ترجع أسماء الملفات التي تحتوي على والدن وعدد مرات الدخول في كل ملف.

يحتوي الأمر grep على العديد من الخيارات التي تتيح لك ضبط طريقة البحث عن النص ، بالإضافة إلى نوع النتائج التي يتم إرجاعها من grep. ابدأ بالخيارات المفيدة المدرجة هنا. (لاحظ أنه يمكنك أيضًا دمج الخيارات - على سبيل المثال ، يبحث grep Walden * | grep Pond في المجلدات الفرعية ويعيد فقط قائمة بالملفات التي تحتوي على الكلمة والدن .)

ابحث عن سلاسل متعددة

باستخدام الأنابيب (ps -ax | grep Finder) ، عامل إعادة توجيه يونكس ، يمكنك إخبار grep بالبحث عن أكثر من سلسلة واحدة. لنفترض أنك تريد البحث عن الملفات التي تحتوي على كليهما والدن و بركة ماء على نفس الخط. يمكنك استخدام هذا الأمر: kill -9 390. الجزء الأول من الأمر يبحث عن الكلمة والدن في أي ملفات في الدليل الحالي ، ويقوم الثاني بتشغيل أمر grep آخر على نتائج الأمر الأول. يعرض Terminal فقط النتائج النهائية للأمرين مجتمعين.

يمكنك تجميع العديد من أوامر grep معًا ، مثل هذا:

^

. يبحث هذا الأمر في ملف قاموس خاص للكلمات التي تحتوي على أحرف صغيرة إلى. ثم يبحث عن الكلمات التي تحتوي على و في النتائج ، وما إلى ذلك ، في النهاية يتم إرجاع الكلمات التي تحتوي على جميع أحرف العلة الخمسة.

تكون وظيفة grep هذه مفيدة للغاية عندما تبحث عن سلاسل معينة في الإخراج من أوامر أخرى. وبهذه الطريقة ، يمكنك تقليل المخرجات الطويلة والمعقدة. على سبيل المثال ، إليك طريقة شائعة للعثور على معرف العملية لبرنامج عالق حتى تتمكن من إنهاءه من سطر الأوامر: اكتب ..

يحصل هذا الأمر أولاً على قائمة بجميع العمليات التي تعمل على جهاز Mac الخاص بك ، ثم ينتقل عبر هذه القائمة بحثًا عن الأسطر التي تحتوي على الكلمة مكتشف. على سبيل المثال ، قد تكون نتائجك كما يلي:

[0-9]

معرف العملية هو الرقم الأول في كل سطر ؛ هنا ، الباحث هو 390. (ستلاحظ أن الأمر يعيد نفسه أيضًا ؛ منذ الكلمة مكتشف موجود في الأمر grep ، والذي يتم إدراجه أيضًا.) لذلك إذا كان Finder عالقًا ، فهذا يمنحك المعلومات التي تحتاجها لفرض الإنهاء. يمكنك الآن كتابة الأمر (حيث يكون معرف العملية هو الوسيطة النهائية) [1-3].

أضف التعبيرات العادية إلى المزيج

بينما رأيت بعضًا من قوة الأمر grep ، يمكنك استخدام المزيد التعبيرات العادية مجموعات خاصة من الشخصيات التي تعمل بمثابة بطاقات جامحة. وفيما يلي بعض الأمثلة على ذلك.

كيفية الاستماع إلى كتاب صوتي بتنسيق mp3 على iphone

إذا لم تكن متأكدًا من كيفية تهجئة الكلمة منفصل، على سبيل المثال (هل هذا ملف إلى أو أ و ؟) ، قم بتشغيل هذا الأمر للتحقق من ملف القاموس الخاص المخفي في أحشاء جهاز Mac الخاص بك:

[a-n]

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

لاحظ الحرفين الخاصين في الأمر: علامة الإقحام ([aeiou]) والنقطة (man grep). يخبر حرف الإقحام grep بالبحث عن السلسلة في بداية السطر ، لذلك لا تتضمن النتائج كلمات مثل كل على حدا. تتطابق النقطة مع أي حرف باستثناء سطر جديد.

ماذا لو كنت تريد العثور على جميع أرقام الهواتف في ملف معين؟ جرب هذا الأمر ، والذي سيجد أرقام الهواتف في ملف 555-1234 صيغة:

echo 4/ddp # AppleTalk Echo Protocol at-rtmp 201/udp # AppleTalk Routing Maintenance at-rtmp 201/tcp # AppleTalk Routing Maintenance
.

كل من

Binary file Walden.doc matches pepys_diary.txt:that spoke ill of him, and told me how basely Lionell Walden Excursions.txt:veil over his experience. All readers of 'Walden' will remember his Walden.txt:purpose in going to Walden Pond was not to live cheaply nor to live dearly
أحرف البدل تطابق أي حرف في النطاق المحدد بين قوسين. يمكنك استخدام نطاقات مثل
grep a /usr/share/dict/words | grep e | grep i | grep o | grep u
لتقييد بحثك بسلاسل محددة. يعمل هذا أيضًا مع الأحرف:
390 ?? S 4:18.96 /System/Library/CoreServices/Finder.app/Contents/MacOS/Finder 2292 std R+ 0:00.00 grep Finder
يتطابق مع أي حرف صغير من إلى إلى ن. يمكنك بناء النطاق الخاص بك بمجموعات من الأحرف - على سبيل المثال ،
grep ^sep.r.te /usr/share/dict/words
سوف تتطابق مع أحرف العلة فقط. يمكنك معرفة المزيد حول التعبيرات العادية عن طريق كتابة
grep [0-9][0-9][0-9]-[0-9][0-9][0-9][0-9] phonebook.txt
في Terminal ، أو من خلال الرجوع إلى كتاب جيفري فريدل الممتاز إتقان التعبيرات العادية ، الطبعة الثانية (أورايلي ، 2002). مع قليل من الممارسة ، ستستخدم grep والتعبيرات العادية للعثور على أي شيء تريده.

كيرك مكيلهيرن هو مؤلف كتاب سطر أوامر Mac OS X: Unix Under the Hood (سيبكس ، 2004). مدونته ، كيركفيل ، يحتوي على مقالات وإرشادات حول استخدام سطر الأوامر مع نظام التشغيل Mac OS X. ]