أوامر ‘sed’ في لينكس: تطبيقات مفيدة موضحة

هل سبق لك أن احتجت لاستبدال نص معين داخل ملف بسرعة؟ العملية قد تتطلب فتح محرر النصوص، العثور على السطر المحدد، ثم كتابة النص البديل، وهو ما قد يصبح مرهقًا إذا تكرر الأمر بشكل متكرر، خصوصًا إذا كانت التعديلات مختلفة. لكن الحل الأمثل لهذه المشكلة يكمن في أداة تُدعى "sed".

الامتثال لمعايير POSIX

قمنا بالتحدث عن POSIX وتناول جوانب متعددة من الواجهات والأدوات التي يجب أن يوفرها النظام ليكون متوافقًا مع هذه المعايير. تعتبر أداة "sed" واحدة من تلك الأدوات التي تقدم طريقة قوية لتصفية البيانات، والبحث، والاستبدال، وإعادة ترتيب المعلومات داخل ملفات النصوص. إنها أداة قوية للغاية وسهلة الاستخدام في البداية، ولكن تعلم تفاصيلها يعد تحديًا بسبب الميزات العديدة التي توفرها.

تنفيذ “sed” وفقًا لمعايير POSIX

على الرغم من أن التنفيذ GNU لأداة "sed" متوافق مع POSIX، إلا أنه يتجاوز المواصفات ليقدم ميزات وإضافات غير مشمولة في متطلبات POSIX. عند استخدام "sed"، يُفضل استخدام علم الـ –posix لتعطيل جميع الإضافات الخاصة بـ GNU، مما يزيد من إمكانية النقل بين الأنظمة. وهذا أمر بالغ الأهمية عند كتابة السكربتات التي تعتزم تشغيلها على منصات مختلفة.

كيفية استخدام أمر “sed” في لينوكس

البنية العامة لأمر "sed" هي كما يلي:

sed [OPTION]… {script-only-if-no-other-script} [input-file]…

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

أوضاع عمل “sed” الرئيسية

هناك عدة أوضاع يمكن أن تعمل بها "sed"، وبعضها يمكن دمجه معًا. القواعد الأساسية تشمل:

  • p – طباعة: تطبع الأسطر التي تحتوي على النص المطابق
  • d – حذف: تحذف الأسطر التي تحتوي على النص المطابق
  • s – استبدال: تستبدل النص المطابق في كل سطر

بالإضافة إلى أوضاع التشغيل، يوجد العديد من الأعلام التي يمكن استخدامها في نهاية نص النمط لتعديل سلوك الأمر. سنستخدم علم الـ g للإشارة إلى الاستبدال العالمي بدلاً من استبدال كل حالة في كل سطر.

أعلام “sed” الأساسية

بعض الأعلام التي سنستخدمها تشمل:

  • n – يمنع الطباعة التلقائية للنصوص التي لا تطابق
  • E/r – يتيح استخدام التعبيرات النمطية الموسعة
  • i – يعدل الملفات في مكانها بدلاً من طباعتها على الشاشة

فهم مفهوم العنوان في “sed”

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

أمثلة عملية على استخدام “sed”

لنفترض أنك ترغب في طباعة مجموعة من الأسطر، يمكنك القيام بذلك كما يلي:

sed -n '2,10p' myfile.txt

بهذا الشكل، قمت بتحديد الأسطر من 2 إلى 10 ليتم طباعتها. نستخدم علم -n هنا لضمان طباعة المطابقات فقط.

على النقيض، يمكنك حذف نفس الأسطر بطريقة مشابهة:

sed '2,10d' myfile.txt

استبدال نصوص معينة

يمكننا البدء الآن في استبدال تكرارات نمط معين في سطر. قد يكون هذا مفيدًا بشكل خاص للمسؤولين عن النظام. على سبيل المثال، إذا كنت تثبت نظام لينوكس جديد وتريد تأمين “sshd” عن طريق منع تسجيل دخول المستخدم الجذر، يمكنك استخدام الأمر التالي:

sed -i 's/[#]PermitRootLogin yes/PermitRootLogin no/g' /etc/ssh/sshd_config

سيقو هذا الأمر بالبحث في ملف /etc/ssh/sshd_config عن السطر الذي يحتوي على #PermitRootLogin yes (مع أو بدون #) ويقوم بتغييره إلى PermitRootLogin no في نفس الموقع.

استنتاج

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

أسئلة شائعة حول استخدام “sed”

  1. ما هي "sed"؟
    "sed" هي أداة لتعالج النصوص بشكل برمجي على نظام لينوكس وتُمكّنك من البحث والاستبدال وتعديل الملفات النصية بسرعة.

  2. هل يمكن استخدام "sed" مع أنظمة تشغيل أخرى؟
    نعم، ولكن قد تختلف الميزات بين الإصدارات. يُفضل استخدام علم الـ –posix لزيادة التوافق.

  3. كيف أعرف أنني استخدمت "sed" بشكل صحيح؟
    يمكنك اختبار الأوامر على ملف تجريبي قبل تطبيقها على ملفات رئيسية لضمان عدم فقدان البيانات.

  4. ما العواقب المحتملة لاستخدام علم الـ -i؟
    يمكن أن يؤدي الاستخدام غير الحكيم لعلم الـ -i إلى فقدان البيانات أو تدمير إعدادات النظام، لذا يجب الحذر جيدًا.

  5. هل "sed" صعب التعلم؟
    بينما يبدأ استخدام "sed" بسهولة، فإن فهم جميع الميزات والتعبيرات النمطية يستغرق بعض الوقت والجهد.

ياسمين معتز

هواياتي كتابة المقالات خبرة أكثر من 5 سنوات في مجال الكتابة والتسويق
زر الذهاب إلى الأعلى
Don`t copy text!