البرمجة

تحليل ومعالجة ملفات النص باستخدام AWK

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

لفهم كيفية عمل التعابير المتعددة “if statement” في AWK بشكل صحيح، دعونا نفحص الجزء المعني من الكود:

awk
if($7=="International") { income=0.0162*h[i]+0.0425*h[i] } else if($7=="Domestic") { income=0.0188*h[i] } else if($7=="Cross_border_rub") { income=0.0162*h[i]+0.025*h[i] }

هذا الكود يستخدم “if statement” لتحديد قيمة المتغير “income” بناءً على قيمة العمود السابع في كل سطر من ملف النص. إليك كيف يعمل ذلك:

  1. إذا كانت قيمة العمود السابع تساوي “International”، يتم حساب القيمة باستخدام الصيغة 0.0162 * h[i] + 0.0425 * h[i].
  2. إذا كانت قيمة العمود السابع تساوي “Domestic”، يتم حساب القيمة باستخدام الصيغة 0.0188 * h[i].
  3. إذا كانت قيمة العمود السابع تساوي “Cross_border_rub”، يتم حساب القيمة باستخدام الصيغة 0.0162 * h[i] + 0.025 * h[i].

وفي الختام، يتم طباعة النتائج للعديد من المتغيرات الأخرى في جملة الطباعة الأخيرة.

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

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

بالتأكيد، دعنا نوسع المزيد عن الكود الخاص بك ونقدم تحليلًا أعمق لفهم كيف يعمل. الكود يستخدم AWK لتحليل ملف نصي يحتوي على سجلات مفصولة بفاصل منفصل “;” والذي يبدو وكأنه يمثل عمليات مالية. دعنا نقسم الشيفرة إلى مكوناتها الرئيسية:

  1. awk -F';' -vOFS=';' '{ gsub(",", ".", $9); print }' file: يُعالج الفاصل المحدد ويستبدل أي فواصل أخرى في العمود التاسع بنقطة عائمة. ثم يطبع كل سجل.

  2. awk -F ';' '$0 = NR-1";"$0': يُضيف رقم السجل إلى بداية كل سجل.

  3. الجزء الرئيسي:

    awk
    awk -F ';' -vOFS=';' '{ bar[$1]=$1; a[$1]=$2; b[$1]=$3; c[$1]=$4; d[$1]=$5; e[$1]=$6; f[$1]=$7; g[$1]=$8; h[$1]=$9; k[$1]=$10; l[$1]=$11; m[$1]=$12; p[$1]=$13; }; if($7=="International") { income=0.0162*h[i]+0.0425*h[i] } else if($7=="Domestic") { income=0.0188*h[i] } else if($7=="Cross_border_rub") { income=0.0162*h[i]+0.025*h[i] } END{ for(i in bar) print income";"a[i],b[i],c[i],d[i],e[i],f[i],g[i],h[i],k[i],l[i],m[i],p[i] }'
    • يتم تخزين قيم السجلات في مصفوفات باستخدام العمود الأول كمفتاح.
    • ثم يتم حساب “income” بناءً على الشروط في العمود السابع.
    • في النهاية، يتم طباعة النتائج لكل سجل.

يُستخدم هذا الكود لمعالجة ملفات النص وتحويلها إلى تنسيق محدد. يُفضل دائمًا فحص التعليقات في الشيفرة لفهم أغراض وخطوات الكود. كما يُشجع على تجربة الشيفرة على ملف نصي حقيقي لرؤية النتائج المتوقعة.

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

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

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

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