في مقالنا الأخير، تناولنا أمثلة مختلفة لأمر “sort“. إذا فاتك ذلك، يمكنك اللحاق به عن طريق متابعة الرابط أدناه. في هذا المنشور، سنستمر من حيث توقفنا في المقالة السابقة، لتغطية الجوانب المتبقية من الأمر. بهذه الطريقة، ستكون كلتا المقالتين إرشادًا شاملًا لأمر “sort” في لينكس.
قبل أن نتابع أكثر، يرجى إنشاء ملف نصي باسم “month.txt” وتعبئته بالبيانات المقدمة أدناه.
echo -e "mar\ndec\noct\nsep\nfeb\naug" > month.txt cat month.txt
15. فرز محتويات الملف حسب الشهر
الأمر التالي يفرز محتويات الملف “month.txt” بترتيب تسلسلي حسب اختصار الشهر أو الاسم باستخدام خيار “'-M'
” الذي يأمر أمر “sort” بمعاملة البيانات كتواريخ وفرزها وفقًا لذلك.
sort -M month.txt
16. فرز الإخراج حسب حجم الملف بتنسيق قابل للقراءة من قبل الإنسان
الأمر التالي يجمع بين أوامر “ls” و “sort” لأداء مهمتين. أولاً، يسرد محتويات دليل المستخدم الرئيسي بتنسيق طويل ثم يسحب هذا القائمة المفرزة إلى أمر “sort” لطباعة حجم الملفات بتنسيق قابل للقراءة من قبل الإنسان، مما يجعل من الأسهل تحديد أكبر وأصغر ملفات في الدليل.
ls -l /home/$USER | sort -h -k5
17. التحقق من تنظيم الملفات المفرزة للتناسق
في المقالة السابقة، قمنا بإنشاء ملفين نصيين: ‘ sorted.txt ‘ في المثال رقم 4 و ‘ lsl.txt ‘ في المثال رقم 6. نعلم أن ‘ sorted.txt ‘ مرتب بالفعل، بينما ‘ lsl.txt ‘ ليس كذلك.
للتحقق من حالة الترتيب لكلا الملفين، سنستخدم أمر ‘ sort ‘، والذي سيسمح لنا بالتأكد من أن ‘ sorted.txt ‘ لا يزال بالترتيب الصحيح وما إذا كان ‘ lsl.txt ‘ يحتاج إلى الترتيب.
sort -c sorted.txt
إذا عاد بـ 0، فهذا يعني أن الملف مرتب وليس هناك تعارض.
sort -c lsl.txt
18. التعامل مع الفوارق عند عدم استخدام المسافات في الملف
إذا كان ال فاصل ( فاصل ) بين الكلمات هو مسافة، فإن أمر ‘ sort ‘ يفسر تلقائيًا أي شيء بعد المسافة الأفقية ككلمة جديدة. ولكن ماذا يحدث عندما لا يكون الفاصل هو المسافة؟
ضع في اعتبارك ملفًا نصيًا، حيث تكون المحتويات مفصولة بشيء آخر غير المسافة مثل '|'
أو '\'
أو '+'
أو '.'
أو ...</code.
أنشئ ملفًا نصيًا حيث تكون المحتويات مفصولة بـ +
. استخدم أمر cat للتحقق من محتويات الملف.
echo -e "21+linux+server+production\n11+debian+RedHat+CentOS\n131+Apache+Mysql+PHP\n7+Shell Scripting+python+perl\n111+postfix+exim+sendmail" > delimiter.txt
$ cat delimiter.txt
الآن قم بفرز هذا الملف على أساس الحقل الأول وهو رقمي.
sort -t '+' -nk1 delimiter.txt
والثاني يعتمد على الحقل الرابع وهو غير رقمي.
إذا كان الفاصل هو Tab يمكنك استخدام $'\t'
بدلاً من '+'
، كما هو موضح في المثال أعلاه.
19. ترتيب الناتج بشكل عشوائي حسب حجم الملف
قم بترتيب ناتج الأمر ls -l لدليل المستخدم الخاص بك بناءً على العمود الخامس، الذي يمثل ‘كمية البيانات’، بترتيب عشوائي.
ls -l /home/avi/ | sort -k5 -R
في كل مرة تقوم فيها بتشغيل قطعة النص أعلاه، من المحتمل أن تحصل على نتيجة مختلفة لأن النتيجة تُولد بشكل عشوائي.
كما هو واضح من القاعدة رقم – 2 من المقال السابق، يُفضل الأمر sort الخطوط التي تبدأ بأحرف صغيرة على الحروف الكبيرة. تحقق أيضًا من المثال 3 في المقال السابق، حيث يظهر السلسلة ‘laptop‘ قبل السلسلة ‘LAPTOP‘.
20. تجاوز تفضيلات الفرز الافتراضية
كيفية تجاوز تفضيلات الفرز الافتراضية؟ قبل أن نتمكن من تجاوز تفضيلات الفرز الافتراضية، نحتاج إلى تصدير متغير البيئة 'LC_ALL'
إلى 'C'
.
للقيام بذلك، قم بتشغيل الكود أدناه في سطر الأوامر الخاص بك.
export LC_ALL=C
ثم قم بفرز ملف النص ‘tecmin.txt’ تجاوزًا تفضيل الفرز الافتراضي.
$ sort tecmint.txt
لا تنسى مقارنة الناتج مع تلك التي تحققت في المثال 3 ويمكنك أيضًا استخدام الخيار ‘-f
‘ المعروف أيضًا بـ ‘--ignore-case
‘ للحصول على ناتج منظم بشكل أفضل.
$ sort -f tecmint.txt
21. دمج ملفي الإدخال في عملية واحدة
ماذا عن تشغيل ‘sort‘ على ملفي الإدخال والانضمام إليهما في خطوة واحدة؟
لنقم بإنشاء ملفي نص، بالاسم ‘file1.txt’ و ‘file2.txt’، ونملأهما ببعض البيانات. في ‘file1.txt’، سنضيف الأرقام كما هو موضح أدناه. كما سنستخدم الأمر cat لفحص محتوى الملف
echo -e “5 Reliable\n2 Fast\n3 Secure\n1 open-source\n4 customizable” > file1.txt cat file1.txt
ونملأ الملف الثاني ‘file2.txt’ ببعض البيانات.
echo -e “3 RedHat\n1 Debian\n5 Ubuntu\n2 Kali\n4 Fedora” > file2.txt cat file2.txt
الآن قم بفرز ودمج مخرجات كليهما.
join <(sort -n file1.txt) <(sort file2.txt)
الاستنتاج
في الختام، استكشف هذا المقال جوانب مختلفة من الأمر ‘sort‘ في لينكس. بدأنا بالفرز الأساسي حسب الترتيب الأبجدي، ومررنا إلى الفرز الرقمي والذي يعتمد على التواريخ، ولامسنا حتى الفواصل المخصصة. كما تعلمنا كيفية تجاوز تفضيلات الفرز الافتراضية لتناسب احتياجاتنا.
علاوة على ذلك، ناقشنا تقنيات التحقق مما إذا كان الملف مرتبًا بالفعل ودمج عمليات ‘sort‘ لملفات الإدخال المتعددة. بفضل المعرفة المكتسبة هنا، لديك أداة قوية تحت تصرفك لتنظيم وفرز البيانات بكفاءة في بيئة لينكس.
نأمل أن يكون هذا المقال مفيدًا ومثيرًا لاهتمامك في مجالات سطر الأوامر. استمر في الاستكشاف والتعلم، وتحسين فن ‘sort’ لتعزيز مهاراتك في لينكس.
Source:
https://www.tecmint.com/linux-sort-command-examples/