CSVファイルを処理するときC#でモジュール作るほどでもないなぁ…ってものがあったときPowerShellならサクッとできるんかいな?
ってことで、試してみることに。
(この記事ではカラム=列、レコード=行、フィールド=1要素と同じ意味ってことにする)
ポイントはこんなとこ。
- Import-CsvコマンドレットでCSVを読み取る
(Import-Csvはファイルの1行目はヘッダ、2行目以降はデータとして認識することに注意) - 1要素は$行.列名の形式で取得する
んで、まずはサンプルファイル。
ヘッダでは1列目は”no”、2列目は”name”、3列目は”apple”って列名で定義しとく。
ファイル名はSample.csvって名前で作成。
no,name,value 1,apple,10 2,orange,15 3,grape,30
んで、PowerShellのスクリプトの内容はこんな感じ。
# 処理共通の変数を初期化する(ファイルのパスを定義しておく) $location = "C:\Users\tetsuyanbo\Desktop\Sample.csv" # CSVを読み込む(念のため-Delimiterで区切り文字を指定する) $data = Import-Csv $location -Delimiter "," # 列名を指定しながら1行づつコンソールに出力する Write-Host "--- 1行づつ出力する ---" foreach($line in $data) { Write-Host "no:$($line.no) name:$($line.name) value:$($line.value)" }
実行したらこんな感じ。
ヘッダで定義した列名で指定しながら1行づつ内容を出力できと。
--- 1行づつ出力する --- no:1 name:apple value:10 no:2 name:orange value:15 no:3 name:grape value:30
んまま、明日への自分へのメモってことで。