نظرة عامة
عندما تحتاج إلى استخراج الأعمدة المطلوبة بسرعة من ملفات السجلات الضخمة أو بيانات CSV في بيئة لينكس، فإن الأمر cut يُعد الأداة الأخف وزناً والأكثر فعالية. سنتعرف في هذا الدليل على التقنيات الأساسية القابلة للتطبيق العملي المباشر، بدءاً من تقسيم الحقول استناداً إلى المحددات وحتى تقطيع النصوص على مستوى البايت ذات العرض الثابت.
استخراج بيانات CSV وحسابات النظام باستخدام المحدد (-d) والحقول (-f)
لإنشاء دليل مخصص لتطبيق الأمر cut عملياً والانتقال إليه، نقوم بتنفيذ الأمر mkdir -p ~/cut_demo && cd ~/cut_demo.

نقوم بإنشاء ملف بيانات مستخدمين تجريبي مفصول بفواصل (,) باستخدام الأمر echo لكتابة الملف users.csv.

الأمر cut هو أداة تُستخدم لاستخراج أعمدة (حقول) محددة أو نطاقات بناءً على البايتات أو الأحرف من ملف نصي أو ناتج أمر ما استناداً إلى محدد معين.
باستخدام الخيار -d، نحدد الفاصلة (,) كمحدد، وباستخدام الخيار -f، نحدد الحقلين الثاني والرابع لعرض الاسم والقسم فقط بشكل منسق من ملف users.csv.
⚙️ [الخيارات الرئيسية]
-d : تحديد الفاصل (المحدد) المستخدم لتقسيم الحقول (القيمة الافتراضية هي علامة التبويب Tab).-f : تحديد أرقام أو نطاق الحقول (الأعمدة) المراد استخراجها.-c : تقطيع البيانات بناءً على مواضع الحروف (الأحرف) بدلاً من البايتات.-b : تقطيع البيانات بناءً على مواضع البايتات.--complement : عكس التحديد واستخراج جميع الأجزاء باستثناء الحقول أو نطاقات الأحرف المحددة.-s : استبعاد الأسطر التي لا تحتوي على المحدد من ناتج العرض.--output-delimiter : تغيير محدد الحقول المستخدم عند عرض النتائج إلى نص محدد.

من ملف /etc/passwd الذي يحتوي على معلومات حسابات نظام لينكس، نقوم باستخراج اسم الحساب (الحقل 1) ومسار الشل الافتراضي (الحقل 7) فقط استناداً إلى محدد النقطتين الرأسيتين (:)، ثم نعرض أول 5 أسطر فقط باستخدام الأمر head.
بهذه الطريقة، يتيح لك الدمج بين الأمر cut وممر التمرير (|) مراقبة الأعمدة الأساسية المطلوبة بسهولة تامة من ملفات إعدادات النظام الكبيرة.

التعامل مع السجلات ذات العرض الثابت باستخدام التقطيع بالبايت (-b) والأحرف (-c)
لمتابعة التطبيق العملي، نقوم بتنفيذ الأمر cd ~/cut_demo للانتقال إلى دليل العمل الذي أنشأناه سابقاً.

لتجربة التقطيع على مستوى الأحرف ذات العرض الثابت، نقوم بإنشاء نموذج لملف سجل service.log يحتوي على التاريخ والوقت ومستوى السجل بتنسيق منتظم.
![echo -e ‘2026-10-07 14:00:01 [INFO] Service started\n2026-10-07 14:00:05 [WARN] High memory usage\n2026-10-07 14:00:12 [ERROR] Connection timed out’ > service.log](/ubuntu/20261007_145511_102/captures/s02_c02_echo_-e__2026-10-07_14_00_01__INFO__Service_starte.png)
بتحديد الخيار -c1-10 مع الأمر cut، يتم اقتطاع النص من الحرف الأول حتى الحرف العاشر من كل سطر، لاستخراج معلومات التاريخ (سنة-شهر-يوم) فقط بشكل منظم.

باستخدام الخيار -c12-19، نقوم بفصل وعرض معلومات الطابع الزمني (ساعة:دقيقة:ثانية) الواقعة بدقة بين الحرف الثاني عشر والتاسع عشر من ملف السجل.

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

تغيير محدد الإخراج (–output-delimiter) واستبعاد حقول محددة (–complement)
للانتقال إلى الدليل الذي يحتوي على الملفات التي تم إنشاؤها مسبقاً، نقوم بتنفيذ الأمر cd ~/cut_demo.

يتيح لك استخدام الخيار --output-delimiter تحديد نص مخصص يظهر بين الحقول المستخرجة بدلاً من المحدد الافتراضي.
نقوم باستخراج الحقلين 2 و 3 من ملف users.csv المفصول بفواصل (,)، ووضع مسافة ورمز الشريط العمودي (|) بين الحقول لتحسين وضوح القراءة.

عند تحديد الخيار --complement، يتم عكس المخرجات لعرض كافة الأعمدة باستثناء الحقول المحددة.
باستخدامه مع الخيار -f3، يتم استبعاد الحقل الثالث فقط (معلومات الدور الوظيفي) وعرض بقية الحقول كما هي.

الربط مع مسارات العمل في البيئة العملية: تحليل إحصائيات عناوين IP عبر دمج cut و sort و uniq
لمواصلة التطبيق العملي، نقوم بتنفيذ الأمر cd ~/cut_demo للانتقال إلى الدليل المخصص الذي أنشأناه مسبقاً.

لمحاكاة تحليل سجلات طلبات العملاء على خادم الويب، نقوم بإنشاء نموذج لملف سجل access.log يحتوي على عناوين IP وطلبات HTTP مفصولة بمسافات.
![echo -e ‘192.168.1.10 - - [07/Oct/2026] “GET /index.html” 200\n192.168.1.15 - - [07/Oct/2026] “POST /login” 401\n192.168.1.10 - - [07/Oct/2026] “GET /dashboard” 200\n10.0.0.5 - - [07/Oct/2026] “GET /api/v1” 200\n192.168.1.10 - - [07/Oct/2026] “POST /logout” 200’ > access.log](/ubuntu/20261007_145511_102/captures/s04_c02_echo_-e__192_168_1_10_-_-__07_Oct_2026___GET__inde.png)
باستخدام الخيارين -d' ' -f1 مع الأمر cut، يتم فصل العمود الأول بناءً على المسافة، وهو عنوان IP الخاص بالعميل.
بعد ذلك، نقوم بالترتيب باستخدام sort، ثم عد مرات التكرار باستخدام uniq -c، ثم الربط مجدداً مع sort -nr للحصول على تصنيف إحصائي مرتب تنازلياً حسب عناوين IP الأكثر طلباً.

تعرفنا في هذا المقال على كيفية استخدام الأمر cut لاستخراج الأعمدة المطلوبة بدقة من ملفات السجلات وبيانات CSV.
جرّب الاستفادة من خيارات المحددات والحقول لجعل مهام معالجة النصوص ومعالجة البيانات اليومية أكثر كفاءة وسلاسة.