Linux Command Line

عدّ سطور الملفات الفريدة بكفاءة في لينكس

Spread the love

يُعدّ عدّ الأسطر الفريدة في ملف مهمة شائعة في لينكس. تُقدّم هذه المقالة طريقتين فعالّتين من سطر الأوامر: باستخدام sort و uniq، وباستخدام awk.

محتويات الجدول

عدّ الأسطر الفريدة باستخدام sort و uniq

تُجمع هذه الطريقة بين قوة sort و uniq لتقديم نهج بسيط. يُرتّب الأمر sort الأسطر أبجدياً، وهو شرط أساسي لـ uniq، الذي يُحصي فقط الأسطر المتطابقة المتتالية. يضيف الخيار -c في uniq بادئة عدد لكل سطر.

لعدّ الأسطر الفريدة في file.txt:


sort file.txt | uniq -c

يعرض هذا كل سطر فريد مع عدده. للحصول على العدد الإجمالي للأسطر الفريدة، قم بتمرير الإخراج إلى wc -l:


sort file.txt | uniq -c | wc -l

مثال:

إذا كان file.txt يحتوي على:


apple
banana
apple
orange
banana
apple

يُخرج sort file.txt | uniq -c ما يلي:


      3 apple
      2 banana
      1 orange

و يُخرج sort file.txt | uniq -c | wc -l ما يلي:


3

عدّ الأسطر الفريدة باستخدام awk

يُقدّم awk حلاً مرناً، مفيداً بشكل خاص في السيناريوهات الأكثر تعقيداً. تستخدم هذه الطريقة مصفوفة ترابطية لتتبع الأسطر الفريدة وأعدادها.

لعدّ الأسطر الفريدة وعرضها مع أعدادها:


awk '{count[$0]++} END {for (line in count) print count[line], line}' file.txt

يزيد هذا البرنامج النصي العداد لكل سطر في مصفوفة count، باستخدام السطر كمفتاح. يُكرّر كتلة END المصفوفة، ويُطبع عدد كل سطر والسطر نفسه.

للحصول على العدد الإجمالي للأسطر الفريدة فقط:


awk '{count[$0]++} END {print length(count)}' file.txt

يستخدم هذا الأمر length(count) لإخراج عدد الأسطر الفريدة مباشرةً (حجم المصفوفة).

مثال:

باستخدام نفس file.txt، يُنتج الأمر الأول لـ awk نفس الإخراج كطريقة sort | uniq -c. يُخرج الأمر الثاني لـ awk الرقم 3، مما يُشير إلى ثلاثة أسطر فريدة.

اختر الطريقة الأنسب لاحتياجاتك. sort و uniq أبسط للمهام الأساسية؛ يُوفّر awk مرونة أكبر للسيناريوهات المعقدة.

اترك تعليقاً

لن يتم نشر عنوان بريدك الإلكتروني. الحقول الإلزامية مشار إليها بـ *