البرمجة

تحليل ملفات C باستخدام Shell Script

في البداية، يظهر أن لديك مشكلة تتعلق بمقارنة محتوى ملفين، أحدهما يحتوي على تعليمات برمجية C والآخر يحتوي على قائمة برؤوس المكتبات. لحل هذه المشكلة باستخدام سكريبت Shell، يمكنك استخدام أدوات مثل grep و awk.

سأقوم بشرح الخطوات التي يمكن اتخاذها لتنفيذ هذه المهمة:

  1. قم بفحص محتوى ملف File1 لاستخراج الوظائف (functions) المتواجدة فيه. يمكنك استخدام أمر awk للقيام بذلك:
bash
awk '/#include<([^>]*)>/ {print $NF}' File1 > functions_list.txt

سينتج هذا الأمر ملفًا يحتوي على أسماء الوظائف المستخدمة في ملف File1.

  1. قم بفحص محتوى ملف File2.c للبحث عن وجود الوظائف الموجودة في functions_list.txt باستخدام أمر grep:
bash
grep -o -w -f functions_list.txt File2.c | sort -u > output.txt

هنا، يقوم الأمر بالبحث عن الوظائف الموجودة في functions_list.txt في ملف File2.c ويخزن النتائج في ملف output.txt. الخيارات -o و -w تتيح لك الحصول على نتائج محددة فقط وبشكل كامل.

  1. الآن، يمكنك تنظيف ملف output.txt للحصول على التنسيق النهائي الذي تريده. يمكنك استخدام awk لتنفيذ هذه المهمة:
bash
awk '{printf "File2:%s,", $0}' output.txt | sed 's/,$/\n/' > final_output.txt

هذا السكريبت يقوم بإضافة بادئة “File2:” لكل سطر في output.txt ويقوم بإزالة الفواصل الزائدة والفاصلة الأخيرة، ثم يخزن النتيجة في ملف final_output.txt.

باستخدام هذه الخطوات، يمكنك مقارنة الوظائف المستخدمة في File1 مع تلك المتواجدة في File2.c وتخزين النتائج بالتنسيق المطلوب في final_output.txt.

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

بالطبع، دعوني أوسع شرحي لتلك الخطوات وأوضح السياق البرمجي لها.

أولًا، يقوم الأمر الأول باستخدام awk للبحث في محتوى File1 واستخراج أسماء الوظائف (functions) المحتوية في الصفوف التي تحتوي على #include<...> باستخدام النمط المناسب. يقوم الأمر بحفظ هذه الأسماء في ملف جديد يسمى functions_list.txt.

ثم، الأمر الثاني يستخدم grep للبحث في محتوى File2.c عن الوظائف الموجودة في functions_list.txt باستخدام خيارات -o -w للحصول على نتائج محددة وبشكل كامل. يتم تخزين النتائج في ملف جديد يسمى output.txt.

أخيرًا، يقوم الأمر الثالث باستخدام awk و sed لتنظيف ملف output.txt وتنسيق النتائج النهائية. يتم إضافة بادئة “File2:” لكل سطر، ويتم إزالة الفواصل الزائدة والفاصلة الأخيرة، والنتيجة النهائية تُخزن في ملف final_output.txt.

هذا السيناريو يعتمد على فهم جيد لأدوات سطر الأوامر مثل awk و grep و sed، وكيفية استخدامها بشكل متزامن للتلاعب بمحتوى الملفات. يمكنك تكرار هذه الخطوات في بيئة Unix أو Linux باستخدام محرر النصوص وطرف الأوامر.

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