Aprendendo PowerShell Sort-Object com Exemplos

classificação: Ordenar dados não deve ser uma tarefa excessivamente complicada. Se você está procurando uma maneira eficiente de ordenar dados, o cmdlet Sort-Object do PowerShell está aqui para ajudar!

Neste tutorial, você aprenderá como usar o cmdlet Sort-Object do PowerShell para ordenar dados, sejam números, strings ou objetos.

Abandone a análise constante de seus dados e ordene-os eficientemente no PowerShell!

Pré-requisitos

Certifique-se de ter uma máquina com PowerShell 5.0 ou posterior instalado para seguir este tutorial com as demonstrações práticas. Este tutorial utiliza o Windows 10 com PowerShell 7 instalado.

Ordenando Dados com o cmdlet Sort-Object do PowerShell

Dependendo de seus requisitos, você pode ordenar dados com base em uma ou mais propriedades de várias maneiras. O cmdlet Sort-Object permite que você ordene dados, por exemplo, em ordem ascendente ou descendente para facilitar a análise e o trabalho com informações estruturadas.

A sintaxe básica do cmdlet Sort-Object é a seguinte, onde:

  • <Objeto-para-Ordenar> – Refere-se à coleta de dados para ordenar, como um array, uma lista ou outros tipos de dados.
  • <-Parâmetro> – Um parâmetro opcional para especificar os critérios de ordenação que permitem personalizar como a ordenação é realizada.
<Object-to-Sort>|Sort-Object <-Parameter>

Para ver como você pode ordenar dados em ordem ascendente e descendente:

1. Abra o PowerShell e execute o comando abaixo, que não fornece saída, mas define uma lista de números inteiros aleatórios na variável $numbers.

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

? Observe que no PowerShell, você não está apenas trabalhando com números e strings, mas com objetos, já que o PowerShell é uma linguagem e shell orientados a objetos.

2. Em seguida, execute os seguintes comandos para ordenar (Sort-Object) e exibir (Write-Output) os números definidos na variável $numbers.

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

Sem anexar parâmetros, a saída exibe os números em ordem ascendente.

Sorting data in ascending order

3. Agora, execute os mesmos comandos, mas desta vez, anexe o parâmetro -Descending para ordenar e exibir os números em ordem decrescente.

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

A saída, semelhante à mostrada abaixo, indica que os números foram ordenados em ordem decrescente.

Sorting numbers in descending order

Ordenando Dados por Valores Únicos

Ordenar dados em ordem crescente e decrescente é uma coisa. Mas pode haver casos em que você precise ordenar dados com base em valores únicos. Neste contexto, “único” refere-se a valores distintos ou não repetidos dentro de um conjunto de dados.

Para ordenar dados por valores únicos:

Execute os seguintes comandos para realizar o seguinte:

  • Defina uma lista de números inteiros (com duplicatas incluídas) na variável $numbers.
  • Ordene os números pelos valores -Únicos em ordem -Decrescente e armazene o resultado na variável $sortedNumbers.

Ao ordenar por valores únicos, você organiza os dados para que cada valor apareça apenas uma vez no resultado ordenado, eliminando duplicatas.

Esses comandos não fornecem saída, mas você verificará os dados ordenados na etapa seguinte.

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

Agora, execute o comando Write-Output abaixo para enviar para a saída o conteúdo da variável $sortedNumbers para verificar o resultado.

Write-Output $sortedNumbers

Abaixo, todos os valores únicos estão ordenados em ordem decrescente, e os valores duplicados foram eliminados.

Como você pode ver, ordenar por valores únicos aumenta a eficiência da análise de dados e elimina informações redundantes ao lidar com grandes conjuntos de dados.

Sorting data by unique values

Ordenação de Dados por Strings

Até agora, você viu como ordenar valores numéricos. Mas e se estiver trabalhando com strings? Não se preocupe. O cmdlet Sort-Object permite que você organize dados de strings em uma ordem específica com base em critérios de classificação.

Neste contexto, uma string refere-se a um único caractere ou a uma sequência de caracteres, como palavras, frases ou outros dados textuais. No PowerShell, as strings são representadas ao enquadrar o texto entre aspas, seja simples (') ou duplas (").

Execute os seguintes comandos para ordenar um array de strings em ordem ascendente (alfabética) por padrão.

A ordenação de strings no PowerShell oferece flexibilidade na organização de dados textuais em uma ordem desejada, permitindo manipulação e análise eficientes dos dados.

# Definir um array de strings
$strings = "a", "b", "c" 
# Ordenar as strings em ordem ascendente por padrão (sem parâmetros)
$sortedStrings = $strings | Sort-Object
# Exibir as strings ordenadas
Write-Output $sortedStrings
Sorting strings in alphabetical order

Agora, execute os mesmos comandos, mas ordene-os em ordem -Descending em vez disso.

# Definir um array de strings
$strings = "a", "b", "c" 
# Ordenar as strings em ordem descendente
$sortedStrings = $strings | Sort-Object -Descending
# Exibir as strings ordenadas
Write-Output $sortedStrings

Desta vez, você verá a saída na ordem reversa, como mostrado abaixo.

Sorting strings in the reverse order

Ordenação de Dados por Propriedades

Sem dúvida, ordenar strings é útil. Mas, geralmente, você deve ser mais específico ao ordenar dados. Além de ordenar strings, por que não ordenar objetos com base em suas propriedades?

Quando se trabalha com objetos no PowerShell, cada objeto geralmente possui uma ou mais propriedades que você pode usar para ordenação. Essas propriedades permitem que você defina seus critérios de ordenação de acordo com suas necessidades.

Execute os comandos a seguir para obter uma lista de todos os processos em execução (Get-Process) em seu sistema e ordená-los por utilização de CPU. O parâmetro -Descending exibe o resultado com os processos mais intensivos em recursos listados primeiro.

# Obter uma coleção de todos os processos em execução
$processes = Get-Process

# Ordenar os processos com base no uso da CPU em ordem decrescente
$sortedProcesses = $processes | Sort-Object -Property CPU -Descending

# Selecionar e exibir os nomes e propriedades de CPU de cada processo
$sortedProcesses | Select-Object Name, CPU
Sorting data by properties

Ordenando Tabelas de Hash

Ordenar objetos por propriedades é um ponto de virada ao trabalhar com análise de dados. Mas e quanto à organização de dados em pares de chave-valor, como tabelas de hash?

O cmdlet Sort-Object permite que você ordene tabelas de hash para aprimorar a apresentação de dados e simplificar a recuperação de informações.

execute o seguinte código para converter uma tabela hash em uma matriz de pares chave-valor e ordenar a tabela hash pelas suas chaves.

# Crie uma tabela hash com três pares chave-valor
$hashTable = @{
    "C" = "Charlie"
    "A" = "Alpha"
    "B" = "Bravo"
}

# Ordene a tabela hash pelas chaves e armazene o resultado ordenado em $sortedHashTable
$sortedHashTable = $hashTable.GetEnumerator() | Sort-Object -Property Name

# Itere através de cada entrada na tabela hash ordenada
foreach ($entry in $sortedHashTable) {
    # Exiba o par chave-valor
    Write-Output "$($entry.Name): $($entry.Value)"
}

Dado que as chaves ordenam a tabela hash, a saída será semelhante à seguinte, onde você pode observar que a saída organiza e exibe os pares chave-valor em uma ordem específica.

Este método de ordenação garante uma melhor apresentação dos dados e facilita a recuperação de informações da tabela hash.

Sorting hash tables

Conclusão

Ao longo deste tutorial, você explorou como ordenar valores únicos, strings, números, processos e até tabelas hash com o cmdlet Sort-Object. A ordenação de dados é uma tarefa que permite pavimentar o caminho para uma análise de dados mais perspicaz, e com o cmdlet Sort-Object do PowerShell, você está no caminho certo.

Armado com esse conhecimento recém-descoberto, agora você pode garantir que seus dados estejam organizados de maneira significativa e mostrá-los com confiança aos outros.

A ordenação é apenas uma das muitas capacidades valiosas do PowerShell e de seus cmdlets. Por que não expandir suas habilidades aprendendo sobre outros cmdlets? Talvez criar registros de programas com Tee-Object ou medir tamanhos de objetos com Measure-Object?

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