PowerShell: 配列の要素をソートする Sort-Object

PowerShellで配列の要素をソートする場合は、 Sort-Objectコマンドレットを使用します。

ソートしたい配列をパイプでSort-Objectに渡して、 結果を受け取るだけです。デフォルトでは昇順でソート、 パラメータを指定すると降順もできます。 ここでは、数値・英字・日本語のひらがな・カタカタのソートを 順番に見ていきます。

まずは数値が入った配列のソートを実行してみます。

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

$arr = $arr | Sort-Object

Write-Host $arr  # 1 2 3 4 5

降順の場合はスイッチパラメータの「-Descending」を指定します。

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

$arr = $arr | Sort-Object -Descending

Write-Host $arr  # 5 4 3 2 1

次は英字のソートです。

$arr = "d", "b", "e", "a", "c"

$arr = $arr | Sort-Object

Write-Host $arr  # a b c d e

英字の場合、 デフォルトでは大文字小文字が区別されていません。 区別する場合はスイッチパラメータの「-CaseSensitive」を指定します。 と仕様上はなっているのですが、 下のように試したところ上手くいきませんでした。バグ?

$arr = "d", "b", "E", "A", "c"

$arr = $arr | Sort-Object -CaseSensitive

Write-Host $arr  # A b c d E (区別されていない)

次は日本語のひらがなをソートします。

言語を指定するための「-Culture」パラメータがありますが、 日本語環境では"ja-JP"が指定されているので、 特に言語を指定することなくソートできます。

$arr = "う", "お", "い", "え", "あ"

$arr = $arr | Sort-Object

Write-Host $arr  # あ い う え お

カタカナも同様にソートできます。

$arr = "エ", "オ", "ア", "イ", "ウ"

$arr = $arr | Sort-Object

Write-Host $arr  # ア イ ウ エ オ

このようにPowerShellでの配列要素のソートは、 Sort-Objectコマンドレットを使うと 簡単に実現できます。

PowerShell