البرمجة

استخدام أمر SED في تحويل النصوص في Linux/Unix

في عالم تحسين وتحليل النصوص في نظام التشغيل Linux/Unix، يعد أمر “SED” واحدًا من الأدوات الرئيسية التي يمكن الاعتماد عليها لإجراء تحويلات على النصوص. وفي هذا السياق، يمكننا استخدام أمر “SED” لتنفيذ التحولات المطلوبة في النص الذي قدمته.

في سياقك، حيث أن لديك نص من الإدخال على الشكل “INTC_KEY,ABC1|OBJID,ABC2″، وترغب في تحويله إلى “DDS.INTC_KEY = REPL.OBJID AND DDS.ABC1 = REPL.ABC2” ومن ثم حفظ الناتج في ملف، يمكن استخدام الأمر التالي:

bash
echo "INTC_KEY,ABC1|OBJID,ABC2" | sed -E 's/([^,]+),([^|]+)\|([^,]+),([^,]+)/DDS.\1 = REPL.\3 AND DDS.\2 = REPL.\4/' > output.txt

لنفس الغرض، يمكنك إنشاء ملف نصي يحتوي على النص المراد تحويله، ومن ثم تنفيذ الأمر على هذا الملف. على سبيل المثال:

  1. قم بإنشاء ملف نصي بالاسم “input.txt” وقم بكتابة النص التالي داخله:
INTC_KEY,ABC1|OBJID,ABC2
  1. ثم قم بتنفيذ الأمر التالي:
bash
sed -E 's/([^,]+),([^|]+)\|([^,]+),([^,]+)/DDS.\1 = REPL.\3 AND DDS.\2 = REPL.\4/' input.txt > output.txt

بهذا، سيتم إجراء التحولات المطلوبة وحفظ النتيجة في ملف جديد بالاسم “output.txt”. وبناءً على المدخلات الخاصة بك، ستكون النتيجة المتوقعة في الملف هي:

DDS.INCT_KEY = REPL.OBJID AND DDS.ABC1 = REPL.ABC2

يمكنك تكرار العملية لمجموعة أو أكثر من البيانات في ملف الإدخال بحيث تكون النتيجة النهائية تحتوي على تحولات متعددة ومنظمة وفقًا للمطلوب.

المزيد من المعلومات

في عملية تحليل وتعديل النصوص باستخدام أمر SED، يعتبر السيناريو الذي طرحته تحديدًا استنادًا إلى بيانات الإدخال “INTC_KEY,ABC1|OBJID,ABC2” والتحول المرغوب “DDS.INTC_KEY = REPL.OBJID AND DDS.ABC1 = REPL.ABC2”. دعونا نفحص تفصيليًا كيف يتم تحقيق هذا باستخدام أمر SED.

أمر SED يستخدم لتحويل النصوص باستخدام تعبيرات منتظمة (Regex). في هذا السياق، تم استخدام التعبير النمطي ([^,]+),([^|]+)\|([^,]+),([^,]+) لتحديد البيانات في النص وتقسيمها إلى مجموعات. سأقوم بتفسير هذا التعبير:

  • ([^,]+): يعني أي مجموعة من الأحرف غير الفاصلة.
  • ,: يعني الفاصلة.
  • ([^|]+): يعني أي مجموعة من الأحرف غير العمود الرأسي (pipe).
  • \|: يعني العمود الرأسي (pipe).
  • وهكذا…

بعد تحديد هذه المجموعات، يتم استخدام \1 و\2 وهكذا للإشارة إلى قيم هذه المجموعات في التعبير النهائي. وهكذا، يتم توليد النص النهائي “DDS.INCT_KEY = REPL.OBJID AND DDS.ABC1 = REPL.ABC2”.

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

هذا النهج يظهر كيف يمكن لأدوات مثل SED أن تكون قوية في تحليل النصوص وتحويلها بشكل فعّال، مما يوفر إمكانيات كبيرة للتحرير والتحليل النصي في بيئة Linux/Unix.

مقالات ذات صلة

زر الذهاب إلى الأعلى
إغلاق

أنت تستخدم إضافة Adblock

يرجى تعطيل مانع الإعلانات حيث أن موقعنا غير مزعج ولا بأس من عرض الأعلانات لك فهي تعتبر كمصدر دخل لنا و دعم مقدم منك لنا لنستمر في تقديم المحتوى المناسب و المفيد لك فلا تبخل بدعمنا عزيزي الزائر