PowerShellでcsvファイルの値を昇順、降順に並べて出力する




新米太郎
新米太郎

CSVの並び替えもPowerShellでやってみたいなあ…

 

新米先生
新米先生

実はpowershellで簡単に出来ちゃいます!

csvファイルの値を昇順、降順に
並べる方法を紹介していきます。

手順

サンプルデータはこちらを使って、解説していきます!

 

上のリンクから「test.csv」のファイルがダウンロード出来たら

PowerShellを開き、cdコマンドでサンプルcsvがあるフォルダに移動します。

 

cd  “「test.csv」があるフォルダパス”

例:

cd C:\Users\Shinmai\Documents\powerShell

 

CSVを読み込む

Import-Csv   “ファイルパス”

例:

Import-Csv .\test.csv

結果:

名前 日付 金額
—- —- —-
A 2020/10/15 3000
B 2020/10/15 2000
C 2020/10/15 5000
D 2020/09/20 2000
E 2020/09/20 2000
F 2020/08/20 1000
G 2020/08/10 2500

 

また、Import-Csvと打たなくても
IpCsv という略称が用意されているので
IpCsv ”ファイルパス” で実行することも出来ます。

 

昇順に並べる

Import-Csv   ”ファイルパス” |Sort ”列名

 

金額の昇順にしてみます。

例:

Import-Csv .\test.csv |Sort 金額

結果:

名前 日付 金額
—- —- —-
F 2020/08/20 1000
E 2020/09/20 2000
D 2020/09/20 2000
B 2020/10/15 2000
G 2020/08/10 2500
A 2020/10/15 3000
C 2020/10/15 5000

 

ちなみにコマンド中にある「|」の意味ですが
これはパイプと呼ばれ、「|」の左側の結果が右側に渡されます。

これを繋げていくと、処理した結果を右へ右へと渡せます。

パイプなのでデータを繋ぐと考えると良いかもしれません。

降順に並べる

Import-Csv ”ファイルパス” |Sort ”列名” -Desc

 

今度は、日付の降順にしてみます。

例:

Import-Csv .\test.csv |sort 日付 -desc

結果:

名前 日付 金額
—- —- —-
C 2020/10/15 5000
B 2020/10/15 2000
A 2020/10/15 3000
E 2020/09/20 2000
D 2020/09/20 2000
F 2020/08/20 1000
G 2020/08/10 2500




降順・昇順を組合わせる

 Import-Csv  ”ファイルパス” |sort @{Expression=”列名“;Desc=$true}, @{Expression=”列名“;Asc=$true}

 

 降順ならDesc=$true
昇順ならAsc=$true
と列名の後に記載します

 

日付の降順、かつ金額の昇順にしてみます

例:

Import-Csv .\test.csv |sort @{Expression="日付";desc=$true}, @{Expression="金額";asc=$true}

結果:

名前 日付 金額
—- —- —-
B 2020/10/15 2000
A 2020/10/15 3000
C 2020/10/15 5000
E 2020/09/20 2000
D 2020/09/20 2000
F 2020/08/20 1000
G 2020/08/10 2500

 

結果をCSVで出力する

今ソート(並び替え)した物はpowershell上でのみソートされただけなので
元のファイルは変わってません。

従って、新たにCSVを出力する必要があります。

 

Import-Csv  ”ファイルパス” |sort @{Expression=”列名”;desc=$true}, @{Expression=”列名”;asc=$true}| Export-Csv .\result.csv -Encoding UTF8

 

例:

Import-Csv .\test.csv |sort @{Expression="日付";desc=$true}, @{Expression="金額";asc=$true}| Export-Csv .\result.csv -Encoding UTF8

 

test.csvと同じフォルダに「result.csv」が生成されます。

これで新たなCSVファイルとして保存することが出来ました。

 

まとめ

いかがだったでしょうか。

powershellでcsvファイルの値を昇順、降順
に並べる方法を解説しました。

今後もpowershellの便利な使い方について、紹介していきます!



コメント

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