تعلم PowerShell Sort-Object مع الأمثلة

ترتيب البيانات لا ينبغي أن يكون مهمة مرهقة. إذا كنت تبحث عن طريقة فعالة لفرز البيانات، فإن cmdlet PowerShell \code>Sort-Object هنا للمساعدة!

في هذا البرنامج التعليمي، ستتعلم كيفية استخدام cmdlet PowerShell \code>Sort-Object لفرز البيانات، سواء كانت أرقامًا أو سلاسل أو كائنات.

تخلص من الاستمرار في تفحص البيانات بالعين المجردة وفرزها بكفاءة في PowerShell!

المتطلبات المسبقة

تأكد من أن لديك جهاز يعمل بنظام PowerShell 5.0 أو الإصدارات الأحدث للمتابعة مع هذا البرنامج التعليمي مع الدروس التطبيقية. يستخدم هذا البرنامج التعليمي Windows 10 مع PowerShell 7 مثبتة.

فرز البيانات باستخدام cmdlet PowerShell \code>Sort-Object

باعتمادك على متطلباتك، يمكنك فرز البيانات بناءً على خاصية واحدة أو أكثر بطرق عديدة. يتيح لك cmdlet \code>Sort-Object فرز البيانات، على سبيل المثال، بترتيب تصاعدي أو تنازلي لتسهيل تحليل والعمل مع المعلومات المنظمة.

بناءً على النحو التالي:

  • <الكائن-للفرز> – يشير إلى جمع البيانات المراد فرزها، مثل مصفوفة أو قائمة أو أنواع بيانات أخرى.
  • <-المعلمة> – معلمة اختيارية لتحديد معايير الفرز التي تسمح لك بتخصيص كيفية أداء الفرز.
<Object-to-Sort>|Sort-Object <-Parameter>

لمعرفة كيف يمكنك فرز البيانات بترتيب تصاعدي وتنازلي:

1. افتح PowerShell وقم بتشغيل الأمر التالي، الذي لا يوفر إخراجًا ولكنه يعرف قائمة من الأرقام العشوائية في المتغير $numbers.

$numbers = 4, 2, 3, 1, 5

? يرجى ملاحظة أنه في PowerShell، أنت لا تعمل فقط مع الأرقام والسلاسل ولكن مع كائنات، حيث يعتبر PowerShell لغة موجهة نحو الكائن وشل.

2. بعد ذلك، قم بتنفيذ الأوامر التالية لفرز (Sort-Objects) وعرض (Write-Output) الأرقام المعرفة في المتغير $numbers.

$sortedNumbers = $numbers | Sort-Object
Write-Output $sortedNumbers

بدون إضافة معلمات، يعرض الإخراج الأرقام بترتيب تصاعدي.

Sorting data in ascending order

3. الآن، قم بتشغيل نفس الأوامر، ولكن في هذا الوقت، أضف المعلمة -Descending لفرز وعرض الأرقام بترتيب تنازلي.

$sortedNumbers = $numbers | Sort-Object -Descending
Write-Output $sortedNumbers

الإخراج الذي يشبه الناتج أدناه يشير إلى أن الأرقام قد تم فرزها بترتيب تنازلي.

Sorting numbers in descending order

ترتيب البيانات حسب القيم الفريدة

ترتيب البيانات بترتيب تصاعدي وتنازلي أمر واحد. ولكن قد تكون هناك حالات حيث تحتاج إلى فرز البيانات بناءً على القيم الفريدة. في هذا السياق، “الفريدة” تشير إلى القيم المميزة أو غير المكررة داخل مجموعة بيانات.

لفرز البيانات حسب القيم الفريدة:

قم بتشغيل الأوامر التالية لأداء الخطوات التالية:

  • قم بتعريف قائمة من الأرقام الصحيحة (بما في ذلك النسخ المكرر) في المتغير $numbers.
  • فرز الأرقام حسب القيم -Unique بترتيب -Descending وتخزين النتيجة في المتغير $sortedNumbers.

عند فرز القيم الفريدة، يتم ترتيب البيانات بحيث تظهر كل قيمة مرة واحدة في النتيجة المرتبة، مما يقضي على النسخ.

هذه الأوامر لا توفر ناتجًا، ولكن ستتحقق من البيانات المرتبة في الخطوة التالية.

$numbers = 4, 2, 3, 3, 1, 5, 2
$sortedNumbers = $numbers | Sort-Object -Unique -Descending

الآن، قم بتشغيل الأمر Write-Output أدناه لإخراج محتويات المتغير $sortedNumbers للتحقق من النتيجة.

Write-Output $sortedNumbers

أدناه، تم ترتيب جميع القيم الفريدة بترتيب تنازلي، وتم القضاء على القيم المكررة.

كما ترون، يعزز فرز القيم الفريدة كفاءة تحليل البيانات ويقضي على المعلومات الزائدة عند التعامل مع مجموعات بيانات كبيرة.

Sorting data by unique values

ترتيب البيانات حسب السلاسل

حتى الآن، رأيت كيفية فرز القيم الرقمية. ولكن ماذا لو كنت تعمل مع سلاسل نصية؟ لا تقلق. أمر Sort-Object يتيح لك ترتيب بيانات السلسلة بترتيب محدد بناءً على معايير الترتيب.

في هذا السياق، يشير مصطلح “سلسلة نصية” إلى حرف واحد أو سلسلة من الأحرف، مثل الكلمات أو العبارات أو البيانات النصية الأخرى. في PowerShell، تُمثل السلاسل النصية بوضع النص بين علامات اقتباس، إما اقتباسًا واحدًا (') أو اقتباسين (").

قم بتنفيذ الأوامر التالية لفرز مصفوفة من السلاسل النصية بترتيب تصاعدي (أبجدي) افتراضيًا.

يوفر ترتيب السلاسل في PowerShell مرونة في تنظيم البيانات النصية بالترتيب المطلوب، مما يتيح لك إجراء عمليات فعّالة على البيانات وتحليلها.

# قم بتعريف مصفوفة من السلاسل
$strings = "a", "b", "c" 
# قم بفرز السلاسل بترتيب تصاعدي افتراضيًا (بدون معلمات)
$sortedStrings = $strings | Sort-Object
# عرض السلاسل المرتبة
Write-Output $sortedStrings
Sorting strings in alphabetical order

الآن، قم بتشغيل نفس الأوامر، ولكن افرزها بترتيب -Descending بدلاً من ذلك.

# قم بتعريف مصفوفة من السلاسل
$strings = "a", "b", "c" 
# قم بفرز السلاسل بترتيب تنازلي
$sortedStrings = $strings | Sort-Object -Descending
# عرض السلاسل المرتبة
Write-Output $sortedStrings

سترى هذه المرة الناتج بالترتيب العكسي، كما هو موضح أدناه.

Sorting strings in the reverse order

فرز البيانات حسب الخصائص

بلا شك، يكون فرز السلاسل مفيدًا. ولكن عادةً، يجب أن تكون أكثر تحديدًا عند فرز البيانات. بالإضافة إلى فرز السلاسل، لما لا تقوم بفرز الكائنات استنادًا إلى خصائصها؟

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

قم بتنفيذ الأوامر التالية لاسترداد قائمة بجميع العمليات الجارية (Get-Process) في نظامك وفرزها حسب استخدام وحدة المعالجة المركزية (CPU). يعرض معامل -Descending النتيجة مع عرض العمليات الأكثر استهلاكًا للموارد أولاً.

 # استرداد مجموعة من جميع العمليات الجارية 
$processes = Get-Process

 # فرز العمليات بناءً على استخدام وحدة المعالجة المركزية بترتيب تنازلي 
$sortedProcesses = $processes | Sort-Object -Property CPU -Descending

 # تحديد وعرض الاسم وخصائص وحدة المعالجة المركزية لكل عملية 
$sortedProcesses | Select-Object Name, CPU
Sorting data by properties

فرز الجداول المتجهية

فرز الكائنات حسب الخصائص هو محور اللعب عند العمل مع تحليل البيانات. ولكن ماذا عن تنظيم البيانات في أزواج المفاتيح والقيم مثل الجداول المتجهية؟

يتيح لك سطر الأوامر Sort-Object فرز الجداول المتجهية لتعزيز عرض البيانات وتبسيط استرجاع المعلومات.

قم بتشغيل الكود التالي لتحويل جدول القيم المتعددة إلى مصفوفة من أزواج المفاتيح والقيم وفرز جدول القيم المتعددة حسب المفاتيح.

# أنشئ جدول قيم متعددة مع ثلاثة أزواج من المفاتيح والقيم
$hashTable = @{
    "C" = "Charlie"
    "A" = "Alpha"
    "B" = "Bravo"
}

# فرز جدول القيم المتعددة حسب المفاتيح وتخزين النتيجة المرتبة في $sortedHashTable
$sortedHashTable = $hashTable.GetEnumerator() | Sort-Object -Property Name

# تكرار كل إدخال في جدول القيم المتعددة المرتب
foreach ($entry in $sortedHashTable) {
    # إخراج زوج المفتاح والقيمة
    Write-Output "$($entry.Name): $($entry.Value)"
}

نظرًا لأن المفاتيح تفرز جدول القيم المتعددة، ستكون النتيجة على النحو التالي، حيث يمكنك ملاحظة أن الإخراج ينظم ويعرض أزواج المفاتيح والقيم في ترتيب محدد.

يضمن هذا الطريقة من الفرز تقديم البيانات بشكل أفضل ويجعل استرداد المعلومات من جدول القيم المتعددة أسهل.

Sorting hash tables

الختام

طوال هذا البرنامج التعليمي، لقد استكشفت كيفية فرز القيم الفريدة، والسلاسل، والأرقام، والعمليات، وحتى جداول القيم المتعددة باستخدام الأمر Sort-Object. فرز البيانات هو مهمة تمكنك من فتح الباب أمام تحليل بيانات أعمق، ومع الأمر Sort-Object في PowerShell، فأنت على الطريق الصحيح.

بفضل هذه المعرفة الجديدة التي اكتسبتها، يمكنك الآن التأكد من تنظيم بياناتك بمعنى وتعرضها بثقة للآخرين.

الفرز هو واحد فقط من القدرات القيمة العديدة لـ PowerShell وسطور الأوامر الخاصة به. لماذا لا توسع مهاراتك عن طريق تعلم سطور الأوامر الأخرى؟ ربما يمكنك إنشاء سجلات البرامج باستخدام Tee-Object أو قياس أحجام الكائنات باستخدام Measure-Object؟

Source:
https://adamtheautomator.com/powershell-sort-object/