نظرة عامة
في بيئة لينكس، تُعد أداة awk الأقوى لمعالجة وتصفية ملفات النصوص الضخمة أو بيانات السجلات (logs) بكفاءة عالية. سنتعرف في هذا الدليل على القواعد الأساسية وأساليب الاستخدام العملي التي تمكّنك، عبر سطر أوامر واحد ودون الحاجة لكتابة برامج نصية معقدة، من استخراج أعمدة معينة، والتصفية المشروطة، وحتى حساب مجاميع البيانات.
1. مبدأ عمل awk الأساسي واستخراج أعمدة محددة
للتطبيق العملي على أمر awk، سنقوم بإنشاء ملف نصي تجريبي يحتوي على اسم المستخدم، والمعرف (ID)، والمسمى الوظيفي مفصولة بمسافات.

باستخدام الأمر awk، نقوم باستخراج وطباعة الحقل الأول ($1) الذي يمثل اسم المستخدم، والحقل الثالث ($3) الذي يمثل المسمى الوظيفي من كل سطر في الملف، بالاعتماد على المسافة كفاصل افتراضي.
إذا لم يتم تحديد فاصل مخصص، فإن awk يقسم الحقول تلقائيًا بناءً على المسافات المتتالية أو علامات التبويب (Tabs).
⚙️ [الخيارات الرئيسية]
-F fs : يحدد فاصل حقول الإدخال (Field Separator).-v var=val : يعين متغيرًا وقيمته الأولية للاستخدام داخل نص awk البرمجي قبل التنفيذ.-f progfile : يحدد مسار الملف الذي يحتوي على كود سكريبت awk المراد تنفيذه.

في ملف /etc/passwd المفصول بنقطتين متعامدتين (:)، نقوم بتحديد الفاصل باستخدام الخيار -F:، ثم نستخرج فقط الحقل الأول ($1) الذي يمثل اسم الحساب والحقل السادس ($6) الذي يمثل مسار الدليل الرئيسي (Home Directory)، ونعرض أول 5 أسطر.

2. تصفية البيانات المخصصة باستخدام الجمل الشرطية والمعاملات
سنقوم بإنشاء ملف تجريبي باسم server_resources.txt يحتوي على معدلات استخدام المعالج (CPU) والذاكرة (Memory) لكل خادم.

نقوم بتصفية الخوادم التي يتجاوز فيها معدل استخدام المعالج في الحقل الثاني ($2) نسبة 80% أو يساويها باستخدام تعبير شرطي، ثم طباعة اسم الخادم المقابل مع رسالة تحذيرية.
يفيد هذا الأسلوب بشكل كبير في تحديد موارد النظام التي تجاوزت الحد المسموح به.

باستخدام معامل العطف المنطقي AND (&&)، نقوم بتحديد وطباعة الخوادم التي تمثل خطورة، حيث يتجاوز فيها استخدام المعالج ($2) والذاكرة ($3) معًا نسبة 80% فأكثر.
يتيح لك تطبيق الشروط المركبة حصر الخوادم التي تجاوزت فيها عدة موارد الحدود الحرجة في آن واحد.

3. الإحصاء وحساب المجاميع باستخدام المتغيرات المضمنة وكتل BEGIN/END
لتطبيق عمليات التجميع والإحصاء باستخدام awk، سننشئ ملفًا تجريبيًا باسم sales_data.txt يحتوي على أسماء المنتجات وقيم المبيعات.

باستخدام كتلة BEGIN، نقوم بطباعة رسالة بدء قبل معالجة محتوى الملف، ثم نجمع قيمة الحقل الثاني ($2) من كل سطر تراكميًا في المتغير sum.
وفي كتلة END التي تُنفذ بعد اكتمال معالجة جميع أسطر الملف، نقوم بحساب وطباعة إجمالي المبيعات ومتوسط المبيعات بالاعتماد على المتغير المضمن NR (إجمالي عدد السجلات/الأسطر).

4. تحليل سجلات خوادم الويب في بيئة العمل وتصفية حركات المرور غير الطبيعية
للتدريب على تحليل سجلات خوادم الويب وتتبع الأخطاء، سنقوم بإنشاء ملف سجل تجريبي access.log بالصيغة القياسية لخوادم Nginx وApache.
![cat « ‘EOF’ > access.log
192.168.1.10 - - [10/Oct/2026:10:00:01] “GET /index.html” 200 4502
192.168.1.11 - - [10/Oct/2026:10:00:02] “POST /login” 401 1024
192.168.1.12 - - [10/Oct/2026:10:00:03] “GET /api/data” 500 2048
192.168.1.10 - - [10/Oct/2026:10:00:04] “GET /dashboard” 200 8920
192.168.1.13 - - [10/Oct/2026:10:00:05] “POST /login” 401 1024
EOF](/ubuntu/20261008_014637_7/captures/s04_c01_cat_____EOF____access_log_192_168_1_10_-_-__10_Oct.png)
باستخدام معامل مطابقة التعبيرات النمطية (~)، نقوم بتصفية أسطر أخطاء العميل 4xx وأخطاء الخادم 5xx التي يبدأ فيها الحقل التاسع ($9) الخاص برمز حالة HTTP بالرقم 4 أو 5.
ومن السجلات المطابقة للشروط، نستخرج فقط عنوان IP المتصل ($1)، ومسار URI المطلوب ($7)، ورمز الحالة ($9) للتحقق السريع من المشكلات وحالات المرور غير الطبيعية.
![awk ‘$9 ~ /^[45]/ {print $1, $7, $9}’ access.log](/ubuntu/20261008_014637_7/captures/s04_c02_awk___9______45____print__1___7___9___access_log.png)
باستخدام المصفوفات الترابطية في awk (ip[$1]++)، نقوم بحساب عدد الطلبات لكل عنوان IP، ثم نطبع الإجمالي التراكمي عبر حلقة تكرار في كتلة END، ونرتب النتائج تنازليًا حسب عدد الطلبات عبر تمريرها إلى الأمر sort -rn.
تُعد هذه التقنية من الأساليب العملية المتبعة لتحديد حركة المرور المفرطة أو محاولات الوصول غير الطبيعية الصادرة من عناوين IP معينة.
![awk ‘{ip[$1]++} END {for (i in ip) print ip[i], i}’ access.log | sort -rn](/ubuntu/20261008_014637_7/captures/s04_c03_awk___ip__1_____END__for__i_in_ip__print_ip_i___i.png)
استعرضنا حتى الآن القواعد الأساسية وأهم الأمثلة العملية لأمر awk الذي يسهّل معالجة النصوص وتحليل السجلات الضخمة في بيئة لينكس.
ندعوك لتطبيق مختلف الخيارات وأنماط الاستخدام المشروحة هنا في مهام عملك الفعلية، لتحقيق أتمتة أكثر كفاءة لعمليات استخراج وتعديل البيانات المتكررة.