Warning: preg_match(): Compilation failed: unrecognized character follows \ at offset 1 in /home/r5652521/public_html/soma-engineering.com/wp-content/themes/affinger/functions.php on line 1548
Warning: preg_match(): Compilation failed: unrecognized character follows \ at offset 1 in /home/r5652521/public_html/soma-engineering.com/wp-content/themes/affinger/functions.php on line 1548
Warning: preg_match(): Compilation failed: unrecognized character follows \ at offset 1 in /home/r5652521/public_html/soma-engineering.com/wp-content/themes/affinger/functions.php on line 1548
Warning: preg_match(): Compilation failed: unrecognized character follows \ at offset 1 in /home/r5652521/public_html/soma-engineering.com/wp-content/themes/affinger/functions.php on line 1548
Warning: preg_match(): Compilation failed: unrecognized character follows \ at offset 1 in /home/r5652521/public_html/soma-engineering.com/wp-content/themes/affinger/functions.php on line 1548
Warning: preg_match(): Compilation failed: unrecognized character follows \ at offset 1 in /home/r5652521/public_html/soma-engineering.com/wp-content/themes/affinger/functions.php on line 1548
こんにちは!そーまんです。
前回は、テキストファイルの操作を PowerShell でやってみました。テキストファイルの操作では、該当のファイルがあるか確認したり、中身を参照したり、検索したり、テキストを上書き・追記したりしました。
皆さんご存知であると思いますが、一応 CSV の説明をここでしておきます。
CSV とは
CSV ファイルは表形式のプレーンテキストで、カンマで区切られた形式で保存されています。
プレーンテキスト | Wikipedia
拡張子は .csv になります。使われ方は様々ですが例えば以下の用途で使われています。
- サーバーやアプリなど、システム内部で持っている情報を画面上で csv でエクスポート、またはインポート
- サーバーやアプリなど、システム内部で持っている情報をスクリプトで csv でエクスポート、またはインポート
- Active Directory のオブジェクトを csv でエクスポート、またはインポート
今回は、CSV ファイルの操作を PowerShell でやってみました。CSV ファイルの操作では、CSV ファイルをインポートしたり、処理の結果を CSV ファイルで出力したりする事ができます。
CSV ファイルのインポート
CSV ファイルのインポートは Import-Csv コマンドレットを使います。
Import-Csv コマンドレットは CSV ファイルのデータからテーブルを作ります。元データは以下になります。
元データ(かなり適当に書きましたw)
1 2 3 4 5 6 7 8 9 10 11 12 13 |
$csv_content = Import-Csv "C:\temp\scripts\sample.csv" $csv_content # 実行結果 社員番号 社員名 部署 入社日 ---- --- -- --- 1 浦島太郎 営業 1900/1/1 2 キャプテン翼 開発 1990/10/1 3 聖闘士星矢 総務 1989/4/7 4 エジソン 秘書 1870/8/5 5 ハム太郎 社長 2010/12/24 |
CSV ファイルにデータ追加
今度はスクリプトで csv ファイルを作ってみましょう。ネタは会社の従業員リストです。
- Add-Content コマンドレットでファイルを作り、-Value オプションで値を追記します。
- 配列で個々の社員番号から入社日までを $staff_data に代入します。
- 代入した $staff_data をパイプさせて、foreach 文で Add-Content を使って各オブジェクトを指定した csv ファイルに書き込みます。$_はオブジェクトになります。基本的には $staff_data はテーブル内では複数列のデータが含まれているのですが、パイプラインを使って一つ一つオブジェクトを $_ を使って取得して、csv ファイルに書き込んでいます。
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 |
Add-Content -Path "C:\temp\scripts\sample2.csv" -Value '"社員番号","社員名","部署","入社日"' $staff_data = @( '"1","浦島太郎","営業","1900/1/1"' '"2","キャプテン翼","開発","1990/10/1"' '"3","聖闘士星矢","総務","1989/4/7"' '"4","エジソン","秘書","1870/8/5"' '"5","ハム太郎","社長","2010/12/24"' ) $staff_data | foreach { Add-Content -Path "C:\temp\scripts\sample2.csv" -Value $_ } $staff_data # 実行結果(下の画像はcsvファイルの中身になります。) "1","浦島太郎","営業","1900/1/1" "2","キャプテン翼","開発","1990/10/1" "3","聖闘士星矢","総務","1989/4/7" "4","エジソン","秘書","1870/8/5" "5","ハム太郎","社長","2010/12/24" |
上のスクリプトで作成された csv ファイル
CSV ファイルの出力
CSV 形式でファイルをエクスポートしたい時は Export-Csv コマンドレットを使います。
CSV ファイルに 2 バイト文字、例えば日本語が入っているような場合ですと、エクスポート時に文字化けしてしまうので、-Encoding Default のオプションは結構よく使います。
引き続き上のスクリプトを使い、カラムのデータをソートしてみます。例えば上の sample2.csv の従業員リストのカラムで入社日でソートしたい場合はこんな感じで書きます。Import-Csv, Export-Csv 両方で -Encoding Default を指定してあげないと、文字化けしてしまうので書いています。-NoTypeInformation オプションは CSV でファイルが作成されたときに、表の先頭に既定の文字列が自動的に入らないようにするオプションになります。
1 2 3 4 5 6 7 8 9 10 |
Import-Csv "C:\temp\scripts\sample2.csv" -Encoding Default | Sort-Object "入社日" | Export-Csv "C:\temp\scripts\sample2_sorted.csv" -NoTypeInformation -Encoding Default # 実行結果(下の画像はcsvファイルの中身になります。) $staff_data "1","浦島太郎","営業","1900/1/1" "2","キャプテン翼","開発","1990/10/1" "3","聖闘士星矢","総務","1989/4/7" "4","エジソン","秘書","1870/8/5" "5","ハム太郎","社長","2010/12/24 |
上のスクリプトで作成された csv ファイル(入社日でソートされました)
最後に
以上になります。いかがでしょうか。
CSV ファイルにインポートやエクスポートする事はよく使うかもしれませんので、コマンドレットをここで覚えておきましょう。またオプションの -Encoding は結構忘れがちですので、文字化けしないように合わせて理解しておきましょう。
それでは最後までお読みいただきありがとうございました!