شرح وترجمة كتاب egrep for linguists

رابط الكتاب الأصلي بالإنجليزية

المقدمة

الصفحات التالية موجهة كنقطة بداية للغويين الميالين للمنهج التجريبي والذين يرغبون في التعرف على بعض الحيل الأساسية في Unix التي قد تكون مفيدة في دراسات مثل دراسة المدونة. كل ما في الصفحات التالية موصوف (ربما بشكل أدق!) في أماكن أخرى 1 و 2 و 3 و 4. ومع ذلك، باستثناء 1، فإن الكتابات المتعلقة بـ Unix ليست مكتوبة للغويين، وغالبًا ما تكون الأمثلة على الأوامر المختلفة بعيدة عن منظور معالجة النصوص اللغوية.

إذا كنت بالفعل على دراية بنظام التشغيل Unix (أو Linux) وبرامجه الأساسية، فلن تقدم لك هذه الصفحات الجديد. من ناحية أخرى، إذا لم تكن تعرف شيئًا عن Unix (حتى أشياء مثل تسجيل الدخول، بدء محرر نصوص أو فتح نافذة Terminal جديدة)، فمن المفضل أن تتعلم هذه الأشياء قبل المتابعة - ولحسن الحظ، هذه الأمور سهلة التعلم. يجب الإشارة إلى أن هذا الموجز ليس بديلاً عن كتاب حول Unix؛ بل هو محاولة للإشارة إلى فائدة بعض أدوات معالجة النصوص البسيطة.

العديد من ملفات النصوص المستخدمة في الأمثلة أدناه وجدت على الإنترنت. مرارًا وتكرارًا، يتم استخدام ملف يسمى sonnets.txt. يحتوي هذا الملف على سونيتات شكسبير، وتم اشتقاقه من الأعمال الكاملة لويليام شكسبير، التي نُشرت إلكترونيًا بواسطة مشروع جوتنبرج 5. تم تعديل هذا الملف وبعض الأمثلة قليلاً، على سبيل المثال بإزالة الفراغات الأولية. أحد الأسباب (الروتينية) لاستخدام السونيتات في الأمثلة هو حقيقة أن الأسطر قصيرة بما يكفي لتناسب الصفحة بشكل جيد، بينما قد يكون من الصعب تقديم نص مثل نص الصحف دون الكثير من التعديل.

مدونة SUSANNE 6، التي تحتوي على حوالي 130,000 كلمة من اللغة الإنجليزية المكتوبة المحللة يدويًا، هو مصدر نص إلكتروني آخر متاح مجانا وتم استخدامه في عدة أمثلة. يتم استخدام ملف يسمى newstext في الأمثلة عدة مرات. بِه حوالي 300,000 كلمة من نصوص الصحف البريطانية، المستخرجة من قرص CD-ROM 7. نص آخر،bonk.html، هو ببساطة ملف HTML من موقع على الويب (لم يعد موجودًا) 8.

أحد أوجه القصور في الأدوات المقدمة هنا، هو أن المادة النصية المدخلة يجب أن تكون منسقة بطريقة تجعل كل عنصر للمعالجة في سطر واحد في الملف المُدَخل. ولكن، لمعالجة نصوص أكثر تعقيداً، فلغة البرمجة Ruby 9 مفيدة جدًا (ولكنها خارج نطاق هذه المقدمة السريعة).

يقدم الفصل ٢ برنامج\أداة egrep، التي تُستخدم للعثور على سلاسل نصية في ملفات النصوص باستخدام أنماط البحث والتعبيرات النمطية (Regular Expressions). وتقدم الفصول من ٣ إلى ٨ بعض الأوامر البسيطة والفعالة في Unix التي تقوم جميعها بمهمة محددة، مثل ترتيب أسطر ملف نصي، على سبيل المثال بالترتيب الأبجدي، تحويل الأحرف الكبيرة إلى صغيرة، إزالة الأسطر المكررة في ملف مرتب، إلخ. في الفصل ٩، يُوضح كيف يمكن دمج هذه الأوامر البسيطة في Pipeline؛ أي تسلسل من الأوامر، لتنفيذ أعمال شيقة وثرية على النص. يقدم الفصلان ١٠ و١١ أمرين آخرين، وهما sed لتنفيذ عمليات “البحث والاستبدال” وcat، الذي يُستخدم لإرسال محتويات ملف أو أكثر عبر الــ Pipeline. أما الفصل الــ١٢ فلتوضيح مدى فائدة الأدوات المقدمة في الفصول السابقة عند دمجها، على سبيل المثال لإنشاء قوائم تكرار الكلمات. وأخيرًا، يُعنى الفصل الـ١٣ كيفية حفظ تسلسل من الأوامر المستخدمة بشكل متكرر في ملف Shell، وتشغيل أو تفعيل هذا الملف بدلاً من كتابة تسلسل طويل من الأوامر مرارًا وتكرارًا. في الملحق، يوجد قائمة بالأوامر الأساسية في Unix.

ما هو egrep

برنامج egrep يُستخدم لجرد الملفات بحثًا عن سلاسل نصية (كلمات). وظيفته الأساسية هي المرور على ملف نصي سطرًا سطرًا وطباعة جميع السطور التي تطابق نمط بحث معين أو تعبيرًا نمطي (regex) إلى Standard Output. وطباعة شيء ما إلى المخرجات Standard Output تعني إظهار النص في نافذة الـTerminal التي يتم تشغيل egrep من خلالها، ويمكن أيضًا حفظ نتيجة أمر egrep في ملف نصي. يتم طباعة كل سطر مطابق لنمط البحث مرة واحدة، حتى إذا كان نمط البحث يتطابق مع أكثر من جزء من السطر.

هناك إصدارات مختلفة من egrep ، التي تختلف في طريقتها قليلاً. النسخة المشروحة هنا هي GNU egrep (الإصدار 2.0)، ولكن الكثير من الأشياء الموصوفة تنطبق أيضًا على إصدارات أخرى من egrep. إذا كانت نسخة egrep الخاصة بك تفتقر إلى بعض الميزات المشروحة، فإن نسخة GNU متاحة مجانًا [5].

يمكن تنفيذ العديد من الأوامر المقدمة هنا أيضًا بواسطة برنامج grep، وهو سلف لـ egrep. إذا كنت تريد توفير عناء كتابة حرف “e”، يمكنك استخدام grep بدلاً من ذلك (هناك اختلافات بين هذين البرنامجين، ولكن بالالتزام بـ egrep، لا يتعين على الكاتب الانشغال بهذه التفاصيل).


  1. Kenneth Ward Church. Unix for poets. Seminar slides/notes. Available on-line on the Internet at: http://pi0995.kub.nl:2080/Paai/Onderw/Ttt/Poets01.html ↩︎ ↩︎

  2. Jeffrey E.F. Friedl. Mastering Regular Expressions. O’Reilly & Associates, Inc., Sebastopol, CA, 1997. ↩︎

  3. Brian W. Kernighan and Rob Pike. The UNIX Programming Environment. Prentice Hall, 1984. ↩︎

  4. Mats Mellstrand. UNIX–Grunden till öppna system. eXmandato AB, Kalmar, 1991. (In Swedish). ↩︎

  5. Project Gutenberg, www homepage. http://www.gutenberg.net/ ↩︎

  6. Geoffrey Sampson. English for the Computer. Claredon Press, Oxford, 1995. ↩︎

  7. The Independent on CD-ROM, 1 january 1996-30 june 1996. CD-ROM, 1996. ↩︎

  8. Bonk Business Inc. http://www.telegate.se/bonk/, 1995. ↩︎

  9. The ruby programming language web site. http://ruby-lang.org/, 2006. ↩︎