データの並べ替え(PowerShell入門)

この記事は以前に http://blog.hiros-dot.net/ に書いたものです。 

Sort-Objectコマンドレットを使用すると、パイプで受け取ったデータ(オブジェクト)の並べ替えを行うことができます。

たとえば、dirコマンド(Get-ChildItemコマンドレット)で取得した結果をデータサイズ順に並べ替える例を見てみましょう。

PS C:\Work> dir | Sort-Object { $_.Length }
ディレクトリ: Microsoft.PowerShell.Core\FileSystem::C:\Work3
Mode                LastWriteTime     Length Name
----                -------------     ------ ----
-a---        2008/01/09     15:29          8 Test03.txt
-a---        2008/01/09     15:35         50 Test05.txt
-a---        2008/01/09     15:35         50 Test01.txt
-a---        2008/01/09     17:45        102 Test02.txt
-a---        2008/01/09     17:45        102 Test04.txt

最初に、Sort-Objectコマンドレットの隣にある $_ について説明します。

パイプ演算子(|)を使用してデータを受け取ると、受け取ったデータは $_ に代入されます。$_は特殊な変数です。

$_.Length とすることで受け取ったデータのLengthプロパティを指し示すことになります。

上記の例では Sort-Object { $_.Length } としているので、データサイズ順に並べ替えることを意味します。

また、Sort-Objectコマンドレットでは並べ替えに昇順/降順を指定することが可能です。

パラメータを指定しない場合は昇順となります。(上記の例)  -descending パラメータを使用した場合は降順となります。

ということで、先ほどの並べ替えを降順でやってみましょう。

PS C:\Work> dir | Sort-Object -Descending { $_.Length }
ディレクトリ: Microsoft.PowerShell.Core\FileSystem::C:\Work3
Mode                LastWriteTime     Length Name
----                -------------     ------ ----
-a---        2008/01/09     17:45        102 Test02.txt
-a---        2008/01/09     17:45        102 Test04.txt
-a---        2008/01/09     15:35         50 Test05.txt
-a---        2008/01/09     15:35         50 Test01.txt
-a---        2008/01/09     15:29          8 Test03.txt

次回はSelect-Objectコマンドレットについて説明したいと思います。

コメント

タイトルとURLをコピーしました