【PowerShell】CSVファイルから条件一致したデータだけを抽出・整形する方法

【PowerShell】CSVファイルから条件一致したデータだけを抽出・整形する方法 PowerShell

PowerShellではCSVファイルを簡単に扱うことができ、特定の条件に一致するデータを抽出したり、整形して出力することが可能です。この記事では、CSVファイルから特定の条件に一致する行だけを抽出し、必要な列だけを選んで新しいファイルに出力する方法を紹介します。

CSVファイルを読み込む基本構文

まずはCSVファイルを読み込む方法から確認します。PowerShellではImport-Csvコマンドレットを使ってCSVファイルをオブジェクトとして読み込むことができます。

$data = Import-Csv -Path "C:\data\sample.csv"

これで$dataにはCSVファイルの各行がオブジェクトとして格納されます。

特定の条件で抽出する方法

次に、条件に一致するデータだけを抽出します。たとえば「部署」が「営業部」のデータだけを取り出したい場合、以下のように記述します。

$filtered = $data | Where-Object { $_.部署 -eq "営業部" }

Where-Objectを使うことで、任意の条件に一致する行のみを抽出できます。

必要な列だけを抽出して整形する

抽出したデータのうち、特定の列だけを選んで出力したい場合はSelect-Objectを使います。たとえば「氏名」と「電話番号」だけを取り出したい場合は以下のように記述します。

$selected = $filtered | Select-Object 氏名, 電話番号

新しいCSVファイルとして出力する

最後に、整形したデータを新しいCSVファイルに出力します。

$selected | Export-Csv -Path "C:\data\filtered.csv" -NoTypeInformation -Encoding UTF8

-NoTypeInformationを付けることで、型情報の行を出力せず、純粋なCSV形式になります。

フルスクリプトの例

# CSVファイルの読み込み
$data = Import-Csv -Path "C:\data\sample.csv"

# 条件に一致する行を抽出
$filtered = $data | Where-Object { $_.部署 -eq "営業部" }

# 必要な列だけを整形
$selected = $filtered | Select-Object 氏名, 電話番号

# 新しいCSVとして保存
$selected | Export-Csv -Path "C:\data\filtered.csv" -NoTypeInformation -Encoding UTF8

おわりに

PowerShellを使えば、GUIソフトに頼らずとも大量のCSVデータを一括で処理できます。定期的にレポートを生成したり、特定の条件に合うデータを抽出する作業を自動化したいときに非常に便利です。業務効率化にも役立つため、ぜひ活用してみてください。