البرمجة

استخدام شروط متعددة في AWK

في بداية الأمر، دعني أشير إلى أن لغة AWK هي لغة برمجة تستخدم بشكل رئيسي لمعالجة وتحليل البيانات المنظمة في صيغة نصية، مثل ملفات النص CSV التي تقدمت بها. والمتغيرات الرئيسية في AWK هي الحقول (fields) والسجلات (records) والتي يتم التلاعب بها باستخدام أوامر وشروط محددة.

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

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

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

لذا، إليك الأمر المعدل الذي ينبغي أن يعطيك النتائج المرجوة:

awk
awk 'BEGIN{FS=",";OFS=","} {value=""; if( $3 ~ /aa/ ) { value="aa" } else { value="," }; if( $3 ~ /bb/ ) { value=(value=="" ? "" : value",")"bb" } else { value=(value=="" ? "" : value",")}; if( $3 ~ /cc/ ) { value=(value=="" ? "" : value",")"cc" } else { value=(value=="" ? "" : value",")}; print $1 , $2 , value}' input.csv > output.csv

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

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

بالطبع، دعني أضيف المزيد من المعلومات لتوضيح كيفية عمل الأمر الجديد في AWK وكيف يتم التحقق من الشروط وطباعة النتائج.

  1. بداية التكوين (BEGIN): في بداية الأمر، يتم تحديد المتغيرات FS (محدد الحقل) و OFS (محدد الحقل للإخراج) لضبط فاصل الحقول في الملف النصي الأصلي والملف النصي الناتج.

  2. الفحص والشروط: يتم استخدام الفحص في الأمر لفحص قيمة العمود الثالث ($3) في كل سجل. يتم استخدام التعبيرات النمطية للتحقق من وجود القيم المطلوبة (aa، bb، cc) في كل قيمة.

  3. تطبيق الشروط: عندما يتم العثور على تطابق، يتم تعيين القيم المطلوبة في المتغير “value” بناءً على الشروط المتحققة. إذا تم العثور على القيمة المطلوبة، يتم إضافتها إلى المتغير “value”، وإلا فإن قيمة فارغة تُضاف.

  4. طباعة النتائج: في نهاية كل سجل، يتم طباعة قيم الحقول الأولى والثانية كما هي ($1 و $2)، وقيمة المتغير “value” التي تم تحديدها بناءً على الشروط.

  5. التحقق من القيم الفارغة: تم استخدام التعبير الشرطي (?:) للتحقق من وجود قيمة فارغة في المتغير “value”، وإضافة القيم المطلوبة بشكل صحيح وفقًا لذلك.

بهذه الطريقة، يتم تطبيق الشروط بشكل صحيح على كل سجل في الملف النصي، وتتم طباعة النتائج بشكل مطابق للمتطلبات المحددة.

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

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

المحتوى محمي من النسخ !!