powershellでCSVファイルを表形式で確認する
powershellでCSVファイルを見るときは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の列名ごとにデータを確認することができます。
また、画面上から全項目、あるいは個別項目にフィルタリングが可能です。
ソート
ソートしたい場合は、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 "郵便番号一覧"
「郵便番号(7桁)」の降順になりました。
最後に
ちょっと中身を確認したい場合、大変便利なんですが一つ致命的な制限があって
表示される列数は30までです。
バグっぽいけど、仕様なんじゃないかーというTechNetブログに書いてありました。
PowerShell and Excel: Fast, Safe, and Reliable - Hey, Scripting Guy! Blog - Site Home - TechNet Blogs
そのためあくまで簡易的なビューアとして使うのがいいのかなと思いました。