Búsqueda de sitios web

Cómo ordenar una matriz alfabéticamente en PowerShell


Recientemente, recibí el requisito de ordenar una matriz alfabéticamente en PowerShell. PowerShell proporciona diferentes métodos para ordenar una matriz alfabéticamente. Uno de los cmdlet sencillos y potentes llamado Sort-Object para ordenar una matriz de PowerShell. En esta publicación de blog, exploraremos cómo usar este cmdlet para ordenar una matriz alfabéticamente en PowerShell con ejemplos completos.

Para ordenar una matriz alfabéticamente en PowerShell, puede utilizar el cmdlet Sort-Object . Por ejemplo, si tiene una matriz $array='Houston', 'Chicago', 'New York', deberá ordenarla canalizando la matriz en el cmdlet de esta manera: $array | Ordenar-Objeto. Esto devolverá los elementos de la matriz ordenados en orden alfabético ascendente.

Ordenar matriz alfabéticamente en PowerShell

Ahora, veamos diferentes formas de ordenar una matriz alfabéticamente en PowerShell.

1. Uso del cmdlet Ordenar objetos

El cmdlet Sort-Object es un comando versátil en PowerShell que le permite ordenar datos en una matriz o una lista según las propiedades del objeto. De forma predeterminada, cuando ordena cadenas, las ordena en orden alfabético ascendente. Aquí hay un ejemplo básico:

# Create an array of strings
$names = 'Smith', 'Anderson', 'Wright', 'Mitchell'

# Sort the array alphabetically
$sortedNames = $names | Sort-Object

# Display the sorted array
$sortedNames

En este ejemplo, el resultado mostrará los nombres en orden alfabético: Anderson, Mitchell, Smith, Wright.

Ejecuté el script completo de PowerShell usando código VS y puedes ver el resultado en la siguiente captura de pantalla:

2. Ordenar una matriz de PowerShell en orden descendente

Si desea ordenar la matriz en orden descendente en PowerShell, puede utilizar el parámetro de cambio -Descending :

Aquí hay un script de PowerShell completo:

# Create an array of strings
$names = 'Smith', 'Anderson', 'Wright', 'Mitchell'

# Sort the array in descending alphabetical order
$sortedNamesDesc = $names | Sort-Object -Descending

# Display the sorted array
$sortedNamesDesc

Puede ver el resultado en la siguiente captura de pantalla:

3. Ordenar la matriz de PowerShell según la longitud de la cadena

Otro requisito de clasificación común podría ser ordenar las cadenas según su longitud en PowerShell. Puede lograr esto utilizando un bloque de secuencia de comandos con el cmdlet Sort-Object :

Aquí está el script para ordenar alfabéticamente una matriz de cadenas usando la longitud de la cadena en PowerShell.

# Create an array of strings
$names = 'Smith', 'Anderson', 'Wright', 'Mitchell'

# Sort the array based on string length
$sortedByLength = $names | Sort-Object { $_.Length }

# Display the sorted array
$sortedByLength

Aquí está el resultado que puede ver en la siguiente captura de pantalla:

4. Clasificación que no distingue entre mayúsculas y minúsculas

De forma predeterminada, Sort-Object no distingue entre mayúsculas y minúsculas al ordenar cadenas en PowerShell. Sin embargo, si necesita realizar una clasificación que distinga entre mayúsculas y minúsculas, puede utilizar el modificador -CaseSensitive en la matriz de PowerShell.

# Create an array of strings
$names = 'Smith', 'Anderson', 'Wright', 'Mitchell'

# Case-sensitive alphabetical sort
$caseSensitiveSort = $names | Sort-Object -CaseSensitive

# Display the sorted array
$caseSensitiveSort

5. Ordenar con comparaciones personalizadas

Para una clasificación más compleja, puede utilizar el método [Array]::Sort en PowerShell con un IComparer personalizado:

# Custom comparer for reverse alphabetical sorting
$comparer = [System.Collections.Generic.Comparer[string]]::Create({
    param($x, $y)
    return [string]::CompareOrdinal($y, $x)
})

# Convert the array to a list
$list = [System.Collections.Generic.List[string]]$names

# Use the Sort method with the custom comparer
$list.Sort($comparer)

# Display the sorted list
$list

Conclusión

Ordenar matrices alfabéticamente en PowerShell es sencillo con el cmdlet Sort-Object . Ya sea que esté ordenando cadenas simples, necesite una ordenación descendente, esté ordenando por longitud de cadena o requiera una ordenación que distinga entre mayúsculas y minúsculas, Ordenar-Objeto lo tiene cubierto. Para una clasificación más avanzada, puede utilizar el método [Array]::Sort con un comparador personalizado.

En este tutorial de PowerShell, he explicado cómo ordenar una matriz alfabéticamente en PowerShell usando diferentes métodos con ejemplos.

Artículos relacionados