powershellでCSVファイルを表形式で確認する

powershellCSVファイルを見るときはImport-Csv,Out-GridViewが便利というお話です。

商用環境などCSV用のビューアなどを入れられない閉じた環境だと、テキストファイルを開く手段がメモ帳しか無い状況で CSVファイルをメモ帳で開くと、行ごとに列の位置を揃えられず非常に見づらいです。

WindowsServer2012とかであれば大抵powershell利用出来ると思うので、いつでも引き出せるようメモしておく

PowerShellバージョンは4.0で動作確認しています。

基本型

ipcsv ファイル名 -Encoding Default | ogv 

試してみる

ためしに郵便番号一覧のCSV日本郵便から取得して試す
読み仮名データの促音・拗音を小書きで表記するもの - zip圧縮形式 日本郵便

郵便番号データの説明 - 日本郵便

取得した郵便番号一覧にはヘッダー行が無いため、-Headerで列名指定してあげる必要があるため以下のようになる
(ヘッダー行がCSVに含まれている場合は、自動で判断してもらえるので、指定は不要)

ipcsv .\13TOKYO.CSV -Encoding Default -Header "全国地方公共団体コード","(旧)郵便番号(5桁)","郵便番号(7桁)","都道府県名(カナ)","市区町村名(カナ)","町域名(カナ)","都道府県名","市区町村名","町域名","一町域が二以上の郵便番号で表される場合の表示","小字毎に番地が起番されている町域の表示","丁目を有する町域の場合の表示","一つの郵便番号で二以上の町域を表す場合の表示","更新の表示","変更理由" | ogv -Title "郵便番号一覧"

実行するとGridViewと言うとおり、表形式のウィンドウ表示されます。 これでCSVの列名ごとにデータを確認することができます。

また、画面上から全項目、あるいは個別項目にフィルタリングが可能です。

f:id:takeman-k:20150520140328p:plain

ソート

ソートしたい場合は、sort(Sort-Object)をパイプでかませてあげれば可能です。 (降順にしたい場合、-Descendingをつける

ipcsv ファイル名 -Encoding Default | sort 列名1 (-Descending) [列名2 (-Descending)...] | ogv 

Sort-Object コマンドレットの使用
https://technet.microsoft.com/ja-jp/library/ee176968.aspx

ソートしてみる

先ほどの郵便番号一覧をソートしてみます

ipcsv .\13TOKYO.CSV -Encoding Default -Header "全国地方公共団体コード","(旧)郵便番号(5桁)","郵便番号(7桁)","都道府県名(カナ)","市区町村名(カナ)","町域名(カナ)","都道府県名","市区町村名","町域名","一町域が二以上の郵便番号で表される場合の表示","小字毎に番地が起番されている町域の表示","丁目を有する町域の場合の表示","一つの郵便番号で二以上の町域を表す場合の表示","更新の表示","変更理由"| sort "郵便番号(7桁)" -Descending | ogv -Title "郵便番号一覧"

f:id:takeman-k:20150520141439p:plain

「郵便番号(7桁)」の降順になりました。

最後に

ちょっと中身を確認したい場合、大変便利なんですが一つ致命的な制限があって 表示される列数は30までです。 バグっぽいけど、仕様なんじゃないかーというTechNetブログに書いてありました。
PowerShell and Excel: Fast, Safe, and Reliable - Hey, Scripting Guy! Blog - Site Home - TechNet Blogs

そのためあくまで簡易的なビューアとして使うのがいいのかなと思いました。