
新米太郎
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
—- —- —-
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
—- —- —-
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
—- —- —-
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
—- —- —-
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の便利な使い方について、紹介していきます!
コメント