احتراف أمر cut في أوبونتو: استخراج وتحليل النصوص

نظرة عامة

يُمثّل التعامل مع ملفات السجلات الضخمة والبيانات المجدولة ركيزة أساسية في إدارة بيئات لينكس اليومية، وهنا تبرز أداة cut كإحدى أخف وأسرع الأدوات الموجهة لمعالجة النصوص وتصفية محتواها. يستعرض هذا الدليل العملي كيفية توظيف خيارات الأداة الأساسية والمتقدمة في توزيعة أوبونتو، سواء عبر عزل الحقول بواسطة محددات مخصصة أو تقطيع البيانات بالاعتماد على مواضع الأحرف والبايتات.

إعداد بيئة العمل وإنشاء عينات البيانات التجريبية

لضمان إجراء التجارب في بيئة معزولة ونظيفة دون التأثير على ملفات النظام الأخرى، ننشئ دليلاً خاصاً للتطبيق وننتقل إليه مباشرة عبر تشغيل الأمر التالي: mkdir -p ~/cut_practice && cd ~/cut_practice.

إنشاء مسار التدريب والانتقال إليه

سنحتاج أولاً إلى بيانات مهيكلة تعتمد على النقطتين الرأسيتين (:) كفاصل، ولتحقيق ذلك ننشئ ملف users.txt متضمناً سجلات المستخدمين وأقسامهم الوظيفية باستخدام أمر printf:

إنشاء ملف حسابات المستخدمين بالاعتماد على النقطتين الرأسيتين كفاصل

ولمحاكاة التنسيقات الشائعة مثل ملفات CSV المفصولة بفواصل عادية (,)، نبني ملفاً تجريبياً باسم servers.csv يحتوي على عناوين الخوادم وحالات التشغيل عبر الأمر الآتي:

إنشاء سجل خوادم بصيغة CSV مفصولة بفواصل

للتحقق من سلامة البنية التنسيقية لملف users.txt والتأكد من مطابقة السجلات للصيغة المطلوبة، نستعرض المحتوى بواسطة أمر cat users.txt:

عرض محتويات ملف بيانات المستخدمين

وبالمثل، نتأكد من اكتمال أعمدة الخوادم وتسجيل رموز الاستجابة بدقة في servers.csv بتنفيذ cat servers.csv:

التحقق من بيانات ملف الخوادم بتنسيق CSV

تصفية الأعمدة والحقول عبر خياري المحدد (-d) والحقل (-f)

عند الرغبة في عزل المعرّف الرقمي فقط من ملف users.txt بالاعتماد على الفاصل (:)، نُمرر الأمر cut -d ':' -f 1 users.txt.
يُعرّف الخيار -d ':' رمز الفصل المعتمد، بينما يلتقط -f 1 العمود الأول حصراً ليمنحنا قائمة واضحة بمعرفات ID:

استخراج العمود الأول فقط بناءً على رمز الفصل المخصص

تتيح الأداة جلب عدة أعمدة متباعدة في آنٍ واحد بتحديد أرقامها مفصولة بفاصلة؛ فعبر الأمر cut -d ':' -f 2,4 users.txt، نحصل فوراً على اسم المستخدم متبوعاً بقسمه الوظيفي فقط مع الحفاظ على الفاصل الأصلي:

استخراج حقول متعددة غير متتالية من الملف

لاستخراج نطاق متتابع من الأعمدة دون الحاجة لكتابة كل حقل على حدة، يُستخدم رمز الشرطة (-) كما في الأمر cut -d ',' -f 1-3 servers.csv.
بهذا التكوين، يتولى الخيار -d ',' تحديد الفاصلة معياراً للتقسيم، ويعمل -f 1-3 على اقتطاع الحقول من الأول إلى الثالث، مبرزاً اسم الخادم وعنوان IP وحالة النشاط:

تصفية نطاق متصل من الأعمدة باستخدام الشرطة

إذا أردنا تجاوز العمود التمهيدي وجلب كافة البيانات المتبقية حتى نهاية السطر، نعتمد صيغة النطاق المفتوح بتشغيل cut -d ':' -f 2- users.txt.
يُهمل النمط -f 2- العمود الأول (ID) بالكامل، ويعرض تفاصيل الاسم والمسؤولية والقسم دفعة واحدة:

استرجاع كافة الحقول بدءاً من عمود محدد حتى نهاية السطر

التقطيع النصي ثابت العرض بالاعتماد على الأحرف (-c) والبايتات (-b)

في الحالات التي تفتقر فيها البيانات إلى فواصل قياسية، يوفر الخيار -c إمكانية الاقتطاع بمواضع المحارف؛ إذ يقوم الأمر cut -c 1-5 users.txt باقتطاع الأحرف من الموضع الأول حتى الخامس من كل سطر:

عزل شريحة نصية وفق مواضع الأحرف بدقة

وبالمثل، يتيح تحديد قطاع وسطي داخل الأسطر استخراج أجزاء نصية معينة دون سواها، كما يتضح بتنفيذ cut -c 5-15 users.txt لعزل المقاطع الواقعة بين الحرف الخامس والخامس عشر:

اقتطاع قطاع محدد من وسط النصوص عبر أرقام المحارف

عند التعامل مع ترميزات تتطلب معالجة الحجم الفيزيائي بدلاً من الأحرف المجردة، يعمل الخيار -b على مستوى البايتات. يكفل الأمر cut -b 1-8 servers.csv قراءة أول ثمانية بايتات فقط لاقتطاع معرّف الخادم بدقة متناهية:

تقطيع البيانات ثنائية الحجم بالاعتماد على موضع البايت

التحكم بفاصل المخرجات واستبعاد الحقول المحددة (–complement)

تتيح الأداة إعادة صياغة المخرجات واستبدال الفواصل القديمة بأخرى أكثر وضوحاً؛ حيث يُنفّذ الأمر cut -d ':' -f 1,2,4 --output-delimiter=' | ' users.txt استخراجاً للحقول المطلوبة مع إحلال علامة الأنبوب (|) محل النقطتين الرأسيتين لتقديم البيانات بشكل أكثر تنظيماً:

تغيير فاصل النتائج المعروضة لتسهيل قراءتها

في سيناريوهات أخرى، قد يكون استبعاد حقل وحيد أسهل بكثير من ذكر سائر الحقول؛ هنا يوفر الخيار المتقدم --complement آلية التحديد المعكوس، كما في cut -d ',' --complement -f 2 servers.csv الذي يحذف عنوان IP (الحقل الثاني) ويُبقي على كافة الأعمدة الأخرى:

حذف عمود معين وعرض بقية البيانات عبر الخيار التكميلي

لتفادي الأخطاء البرمجية الناتجة عن الأسطر التي لا تطابق التنسيق المطلوب، يضمن خيار التصفية -s (--only-delimited) تجاهل السطور الخالية من الفاصل المعتمد، ويظهر ذلك بتطبيق cut -d ':' -s -f 2 users.txt للتركيز على استخلاص الأسماء من الأسطر الصالحة فقط:

استبعاد الأسطر غير المتوافقة مع معيار الفصل المحدد

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