كيفية تعديل النص باستخدام التعبيرات العادية باستخدام محرر دفق sed

جدول المحتويات:

كيفية تعديل النص باستخدام التعبيرات العادية باستخدام محرر دفق sed
كيفية تعديل النص باستخدام التعبيرات العادية باستخدام محرر دفق sed
Anonim

سيقوم كل مستخدم للكمبيوتر في العالم عاجلاً أم آجلاً بتعديل سلسلة نصية - إما يدويًا أو تلقائيًا. تعرف على محرر الدفق sed، والذي يمكّنك من إجراء تعديلات نصية مجمعة على السلاسل والملفات.

التعبيرات العادية في سطر الأوامر

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

للتحقق مما إذا كان sed متاحًا على توزيعة Linux الخاصة بك ، اكتب

sed --versionفي سطر الأوامر:

سيد تيار محرر الإصدار
سيد تيار محرر الإصدار

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

sudo apt install sed

لأنظمة التشغيل المستندة إلى Ubuntu / Debian ، أو

sudo yum install sedلأنظمة التشغيل المستندة إلى RedHat / RPM.

sedيطبق تحويل نصي صغير باستخدام ما يسمى RegEx ، أو التعبير العادي. التعبير العادي هو شكل وطريقة للتعبير عن عمليات بحث تستند إلى نص أكثر تعقيدًا واستبدال وتعديل العمليات بتنسيق لا يزال قابلاً للقراءة.التعبيرات العادية معقدة ، وقد تصعب قراءتها للمبتدئين. يمكنك قراءة دليلنا ، كيف تستخدم بالفعل Regex ، لمزيد من المعلومات حول كيفية قراءة وكتابة Regex.

لغرض هذه المقالة ، سنلتزم بسهولة فهم وقراءة التعبيرات العادية. على سبيل المثال ، ما يلي هو بديل بسيط:

مرحبًا تحول معجبين Cloudsavvyit
مرحبًا تحول معجبين Cloudsavvyit

كما ترى ، قمنا بترديد جزء صغير من النص ، ثم قمنا بتحويله باستخدام أداة sed. استخدمنا استخدام الأمر sed "s" (البديل) وأشارنا إلى ما نريد تغييره. يمكنك قراءة هذا بطريقة أخرى مثل

s | من | إلى |حيث '|' هو الفاصل بين الأقسام / الحقول ، و 's' هو الأمر و 'from' و 'to' هما الخياران اللذان تم تمريرهما لأمر 's.

قمنا بالتالي بتحويل "Hello Cloud Savvy IT معجبين!" إلى "Hello cloudsavvyit.com معجبين!" فقط من خلال تغيير جزء من النص باستخدام محرر تدفق sed. لنأخذ مثالًا أكثر تعقيدًا بعض الشيء.

تحويل نص في ملف باستخدام محرر دفق sed
تحويل نص في ملف باستخدام محرر دفق sed

هنا نقوم أولاً بإنشاء ملف بثلاثة أسطر باستخدام الأمر

echo

مع إعادة التوجيه إلى ملف (يقوم ">" بإنشاء ملف جديد ، والكتابة فوق ملف يحمل نفس الاسم إذا موجود ، ويلحق ">>" بملف دون تعديله بطريقة أخرى). بعد ذلك ، عرضنا محتويات الملف باستخدام الأمر

cat.

قمنا بعد ذلك بتحويل محتويات الملف باستخدام الأداة

sedمباشرة. للقيام بذلك ، حددنا الخيار "-i" لـ sed الذي يحرر الملف في مكانه. تعليمات التحويل النصي الفعلية هي نفسها كما كانت من قبل. وأخيرًا نحدد اسم الملف في نهاية الأمر. ثم نتحقق من محتويات الملف ونلاحظ كيف تغيرت المدخلات الخاصة بنا.

كما ترى ، أو تعلم بالفعل من التجربة السابقة ، هناك الكثير من القوة المتاحة في أداة sed.

دعونا نضيف بعض الإثارة للأشياء من خلال التوسع في تعبيرنا المعتاد وطريقة كتابة تعليمات تحويل النص sed:

تعبير منتظم أكثر تعقيدًا وتعليمات sed
تعبير منتظم أكثر تعقيدًا وتعليمات sed

في هذا المثال ، استبدلنا الحرف "h" بـ "_H" وقمنا بذلك في صيغة عامة (لاحظ المؤهل "g" بالقرب من نهاية التعليمات الأولى التي تم تمريرها إلى sed) وبطريقة غير حساسة لحالة الأحرف (لاحظ المؤهل "i" أيضًا بالقرب من نهاية التعليمات الأولى). تتم مطابقة "h" على الرغم من احتواء الملف على "H" بسبب المؤهل "i".

ثم بدأنا تعليمة جديدة (تم إنهاء / إنهاء التعليمات بـ "؛" على حد سواء في العديد من لغات البرمجة الأخرى) حيث قمنا بحذف ".com" من خلال البحث عنه بشكل أساسي واستبداله بلا شيء.

لاحظ أيضًا كيف استخدمنا فواصل خيارات المجال / الأوامر المختلفة. في المثال الأول ، استخدمنا "|" وهو فاصل مجال سهل الاستخدام بشكل عام وغير مألوف إلى حد ما. يستخدم العديد من الأشخاص "/" على الرغم من أن هذا قد يؤدي إلى حدوث مشكلات عندما تقوم بتحليل أسماء المسارات التي غالبًا ما تحتوي على "/".

تمكنك القدرة على استخدام فواصل خيارات حقل / أمر مختلفة من استخدام فاصل آخر بسهولة إذا كانت السلسلة النصية الخاصة بك تحتوي بالفعل أو من المحتمل أن تحتوي على حرف معين.

استخدام sed مع الملفات

لنستكشف مثالًا آخر يعتمد على sed حيث سنقوم بحقن نص في ملف:

إدخال نص باستخدام محرر تيار sed
إدخال نص باستخدام محرر تيار sed

في هذا المثال ، أنشأنا ملفًا مكونًا من 5 أسطر ثم استخدمنا بعد ذلك تعليمة sed المعقدة قليلاً لإدخال فاصل "-" بعد كل سطر ثاني. بينما يشرح بناء الجملة نفسه في الغالب ، من المثير للاهتمام ملاحظة أن الأمر "r" (قراءة / إلحاق نص من ملف) يحدد اسم ملف الحقن مباشرةً ، بينما لا يزال داخل التعليمة الرئيسية ، بدون أي فاصل.

يمكنك أيضًا أن تبدأ في رؤية أنه بالإضافة إلى تعلم تركيب تعبير عادي ، من المفيد تعلم بناء جملة sed بعمق. يشبه الأمر تقريبًا تعلم لغتين أجنبيتين جديدتين ، لكن الميزة هي أن بناء جملة sed يمكن أن ينمو مع حاجتك إلى تعقيد إضافي.

لنستكشف مثالاً حيث نستبدل منطقة نصية معينة بشيء آخر:

تعديل مناطق نصية معينة باستخدام sed
تعديل مناطق نصية معينة باستخدام sed

في هذا المثال ، نبحث عن النص "3" ، وبالنسبة لهذا السطر ، سنستبدل "C" بـ "Z". ترى كيف يمكن أن تكون سيد متعدد الاستخدامات.

أخيرًا ، يمكننا النظر في تحليل أنواع أخرى من المدخلات:

تحليل أنواع أخرى من المدخلات النصية باستخدام sed
تحليل أنواع أخرى من المدخلات النصية باستخدام sed

كما ترى ، أنشأنا 3 ملفات ، وطلبنا قائمة دليل باستخدام الأمر

ls. ثم أخذنا هذا الإخراج كمدخل إلى sed (باستخدام أمر Linux pipe ، "|") وقمنا بتحويل جزء من قائمة دليلنا إلى شرطة سفلية.

محرر دفق sed هو أداة متعددة الاستخدامات يمكن أن تساعدك على تحليل وتحويل أي نص تقريبًا مباشرة من سطر أوامر المحطة ، سواء كان الإدخال يأتي من عبارة بسيطة

echo

، أدوات Linux الأخرى ، أو من ملف نصي مسطح. استمتع!

موضوع شعبي