يعد أمر “sort” برنامج Linux يستخدم لطباعة سطور ملفات الإدخال النصية ودمج جميع الملفات بترتيب فرز. يأخذ أمر الفرز المسافة الفارغة كفاصل حقول والملف الكامل للإدخال كمفتاح فرز. ومن المهم ملاحظة أن أمر الفرز لا يرتب الملفات بالفعل ولكنه يطبع فقط الإخراج المرتب حتى تقوم بتحويل الإخراج.
تهدف هذه المقالة إلى التعمق في فهم أمر Linux ‘sort‘ مع 14 مثالًا عمليًا مفيدًا يُظهر لك كيفية استخدام أمر الفرز في Linux.
1. إنشاء ملف نصي بمحتوى محدد
أولاً، سنقوم بإنشاء ملف نصي، يسمى ‘tecmint.txt‘، والذي سيتم استخدامه لتنفيذ أمثلة أمر ‘sort‘ في دليل العمل الخاص بنا لهذه المهمة هو ‘/home/$USER/Desktop/tecmint‘.
يتيح الخيار ‘-e
‘ في الأمر التالي تفسير الباكسلاش و/n
يخبر أمر echo بكتابة كل سلسلة إلى سطر جديد.
echo -e "computer\nmouse\nLAPTOP\ndata\nRedHat\nlaptop\ndebian\nlaptop" > tecmint.txt
2. عرض محتويات الملف
قبل أن نبدأ بأمر ‘sort‘، دعنا نلقي نظرة على محتويات الملف وكيف يبدو باستخدام أمر cat التالي.
cat tecmint.txt
3. فرز محتوى الملف
يتم استخدام الأمر “sort tecmint.txt” لإعادة كتابة السطور في الملف بترتيب تصاعدي حسب الأبجدية، إذا كانت هناك أي سطور مكررة، فستحتفظ بنسخة واحدة من كل سطر فريد.
sort tecmint.txt
4. توجيه الناتج المفرز إلى ملف جديد
يتم استخدام الأمر التالي لفرز سطور ملف النص ” tecmint.txt” بترتيب أبجدي ومن ثم يتم توجيه الناتج المفرز إلى ملف جديد يسمى ” sorted.txt“، مما يعني أن الملف الأصلي لا يزال دون تغيير، ويتم تخزين المحتوى المفرز في ملف منفصل.
للتحقق من المحتوى، استخدم أمر cat.
sort tecmint.txt > sorted.txt cat sorted.txt
5. فرز محتوى الملف بترتيب عكسي
يتم استخدام الأمر التالي لفرز سطور ملف النص ” tecmint.txt” بترتيب عكسي، مما يعني أنه سيرتب السطور بترتيب تنازلي حسب الأبجدية ويتم توجيه الناتج المفرز إلى ملف جديد يسمى ” reversesorted.txt“
sort -r tecmint.txt > reversesorted.txt cat reversesorted.txt
6. حفظ قائمة الملفات والدلائل
الأمر التالي يستخدم لتصفح محتويات دليل المستخدم الرئيسي (“/home/$USER“) بشكل مفصل باستخدام أمر ls بشكل طويل ومن ثم يعيد توجيه هذا القائمة المفصلة للملف النصي باسم “lsl.txt” الموجود على مكتبة المستخدم ، على وجه التحديد في الدليل “tecmint“.
ls -l /home/$USER > /home/$USER/Desktop/tecmint/lsl.txt cat lsl.txt
الآن ، سنستكشف أمثلة على فرز المحتويات بناءً على حقول أخرى غير الأحرف الابتدائية الافتراضية.
7. فرز “محتويات الملف بناءً على الحقل الثاني
الأمر التالي يستخدم لفرز محتويات الملف “lsl.txt” بناءً على القيم في الحقل الثاني من كل سطر. يشير الخيار ‘-n'
إلى الفرز العددي ، مع التعامل مع الحقل الثاني كأرقام بدلاً من النص.
يحدد الخيار ‘-k2'
أننا نريد الفرز بناءً على الحقل الثاني. بتنفيذ هذا الأمر ، ستحصل على قائمة مرتبة من خطوط “lsl.txt” ، حيث يكون معيار الفرز هو القيم العددية في الحقل الثاني من كل سطر.
sort -nk2 lsl.txt
8. فرز محتويات الملف بناءً على الحقل التاسع
الأمر التالي يستخدم لفرز سطور الملف “lsl.txt” بناءً على القيم في الحقل التاسع من كل سطر بترتيب تصاعدي. يحدد الخيار ‘-k9'
أن الفرز يجب أن يتم بناءً على الحقل التاسع.
sort -k9 lsl.txt
9. فرز الملفات حسب حجم الملف
الأمر التالي يجمع بين أوامر ‘ls‘ و ‘sort‘ لتصنيف قائمة عناصر الدليل الأساسي للمستخدم بشكل مفصل ومن ثم ينفذ عملية تصنيف للقائمة بناءً على قيم العمود الخامس، الذي يمثل أحجام الملفات.
ls -l /home/$USER | sort -nk5
10. إزالة السطور المكررة في ملف
الأمر التالي يصنف سطور الملف “tecmint.txt” بترتيب تصاعدي ويزيل أي سطور مكررة باستخدام خيار ‘-u
‘، الذي يمثل ” unique“، ويضمن أن يتم الاحتفاظ بالسطور الفريدة في الناتج المصنف.
$ cat tecmint.txt $ sort -u tecmint.txt
القواعد حتى الآن (ما لاحظناه):
- يتم تفضيل الأسطر التي تبدأ بأرقام في القائمة وتكون في الأعلى حتى يتم تحديد خلاف ذلك (
-r
). - يتم تفضيل الأسطر التي تبدأ بحروف صغيرة في القائمة وتكون في الأعلى حتى يتم تحديد خلاف ذلك (
-r
). - يتم سرد المحتوى بناءً على حدوث الأحرف في القاموس حتى يتم تحديد خلاف ذلك (
-r
). - يعامل أمر التصنيف بشكل افتراضي كل سطر كسلسلة من الأحرف ثم يصنفها اعتمادًا على حدوث الأحرف في القاموس (يتم تفضيل العددية؛ انظر القاعدة – 1) حتى يتم تحديد خلاف ذلك.
11. توجيه قائمة الدليل إلى ملف
الأمر التالي يُدرج محتويات الدليل المنزلي للمستخدم بشكل طويل، بما في ذلك الملفات والدلائل الخفية، ثم يُعيد توجيه قائمة الدليل إلى ملف نصي باسم “lsla.txt” الموجود على سطح المكتب للمستخدم داخل الدليل “tecmint“.
ls -lA /home/$USER > /home/$USER/Desktop/tecmint/lsla.txt cat lsla.txt
أولئك المألوفون بـ أمر ls يفهمون أن 'ls -lA'
يُعادل 'ls -l'
مع الملفات الخفية. نتيجة لذلك، سيكون معظم المحتويات في هذين الأمرين متشابهين.
12. ترتيب محتويات الملفات
الأمر التالي يرتب محتويات ملفين نصيين، ‘ lsl.txt ‘ و ‘ lsla.txt ‘، بترتيب تصاعدي حسب الأبجدية ومن ثم يجمع ويعرض المحتوى المرتب في الطرفية.
$ sort lsl.txt lsla.txt
لاحظ تكرار الملفات والمجلدات.
13. إزالة السطور المكررة في الملف
الأمر التالي يجمع ويرتب محتويات ملفين نصيين، ‘ lsl.txt ‘ و ‘ lsla.txt ‘، بترتيب تصاعدي حسب الأبجدية أثناء إزالة أي سطور مكررة باستخدام خيار '-u'
، مما يضمن الحفاظ على السطور الفريدة في الناتج المرتب.
$ sort -u lsl.txt lsla.txt
لاحظ أن التكرارات تم حذفها من الناتج. علاوة على ذلك، يمكنك حفظ الناتج في ملف جديد عن طريق إعادة توجيهه.
14. فرز الإخراج حسب عدة حقول باستخدام الفاصلة المخصصة
يجمع الأمر التالي بين أوامر ‘ls’ و’sort’ لعرض محتويات الدليل المنزلي للمستخدم بشكل مفصل ثم ينفذ سلسلة الملفات إلى الأمر ‘sort’ الذي يفرز الإخراج بناءً على أعمدة وحقول معينة.
ls -l /home/$USER | sort -t "," -nk2,5 -k9
إليك تفصيل الأمر:
-t ","
– يحدد أن الفاصلة المنقوطة(",")
تُستخدم كفاصلة للحقول.-nk2,5
– يشير إلى الفرز حسب القيمة العددية في الأعمدة من 2 إلى 5، التي تمثل عادة الأذونات وتفاصيل الملكية.-k9
– يفرز أيضًا النتيجة حسب العمود التاسع، الذي يمثل أحجام الملفات.
هذا كل شيء الآن. في المقالة التالية، سنتعمق في أمثلة أكثر تفصيلاً حول أمر الفرز لك.
يرجى الاستمرار في المشاركة والتعليق والإعجاب ومساعدتنا للوصول إلى جمهور أكبر.