يُعدّ عدّ الأسطر الفريدة في ملف مهمة شائعة في لينكس. تُقدّم هذه المقالة طريقتين فعالّتين من سطر الأوامر: باستخدام 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
مرونة أكبر للسيناريوهات المعقدة.