PowerShell で CSV ファイルを組み合わせる

Migel Hewage Nimesha 2023年1月30日
  1. CSV フォーマット
  2. PowerShell で .csv ファイルをフィルタリングする
  3. PowerShell で各 .csv ファイルオブジェクトをフェッチする
  4. PowerShell で CSV ファイルのコンテンツをマージする
  5. PowerShell でマージされたコンテンツをテキストファイルに書き込む
PowerShell で CSV ファイルを組み合わせる

複数の CSV ファイルをマージし、PowerShell でデータをテキストファイルに書き込む必要がある場合があります。Import-Csv および Export-Csv コマンドレットを使用して、この操作を実行できます。

CSV フォーマット

さまざまな目的で使用できるさまざまなタイプのファイル形式があります。CSV は単純な構造を使用してデータを保存します。

異なるプログラム間でデータを交換するために使用できます。その名前 CSV(comma-separated values)が示すように、データは comma-separated です。

CSV ファイルに保存されている情報は次のようになります。

UserName,Identifier,First Name,Last Name
jak12,1001,Harry,Smith
Rock90,1002,Jeremy,Hamilton
Rick23,1003,Rakesh,Donas
User01,1004,Lokie,Ferguson

区切り文字は、スペース、セミコロン、またはその他の文字にすることができます。

PowerShell を使用してマージする 2つの csv ファイルを作成しましょう。

CSV ファイル

username.csv コンテンツ:

ユーザー名 CSV ファイル

username2.csv コンテンツ:

username2 CSV ファイル

PowerShell で .csv ファイルをフィルタリングする

Get-ChildItem コマンドレットを使用して、指定した場所にあるすべての .csv ファイルタイプをフェッチすることをお勧めします。 -Filter パラメーターを渡して、拡張子が .csv のファイルをフィルターに掛けることができます。

.csv ファイルへのフォルダパスは、場合によって異なる場合があります。

$csvFilePath = "D:\csvfiles"
$csvFileList = Get-ChildItem $csvFilePath -Filter *.csv

$csvFileList で利用可能なコンテンツを確認しましょう。

$csvFileList

出力:

PowerShell で CSV ファイルをフィルタリングする

PowerShell で各 .csv ファイルオブジェクトをフェッチする

フルネームで各ファイルオブジェクトを取得してみましょう。Select-Object コマンドレットを使用して、展開されたプロパティを持つ各オブジェクトを取得できます。

前のステップの出力を Select-Object コマンドにパイプします。

$csfFilesToImport = $csvFileList | Select-Object -ExpandProperty FullName

$csfFilesToImport 変数を表示すると、両方の CSV ファイルオブジェクトがフルネームで使用可能であることがわかります。

$csfFilesToImport

出力:

PowerShell で各 CSV ファイルオブジェクトをフェッチする

PowerShell で CSV ファイルのコンテンツをマージする

すべての CSV ファイルを取得したので、各ファイルのコンテンツをインポートしましょう。これにより、コンテンツが共通のヘッダー行に簡単にマージされます。

Import-CSV を使用して、パイプされた CSV ファイルの内容からテーブルのようなオブジェクトを作成できます。

$importedCsvFiles = $csfFilesToImport | Import-Csv
$importedCsvFiles

出力:

PowerShell で CSV ファイルのコンテンツをマージする

情報は、提供された 2つの CSV ファイルからマージされました。

PowerShell でマージされたコンテンツをテキストファイルに書き込む

上記のオブジェクトを CSV 文字列に変換して、テキストファイルに保存できます。Export-Csv コマンドレットを使用できます。

Append パラメータを使用して、コンテンツが置き換えられたり追加されたりしないようにする必要があります。

$importedCsvFiles | Export-Csv D:\merged.txt -NoTypeInformation -Append

出力:

これにより、merged.txt という新しいテキストファイルが作成されます。そのファイルの内容は、上記の 2つの CSV ファイルからマージされます。

PowerShell でマージされたコンテンツをテキストファイルに書き込む

Migel Hewage Nimesha avatar Migel Hewage Nimesha avatar

Nimesha is a Full-stack Software Engineer for more than five years, he loves technology, as technology has the power to solve our many problems within just a minute. He have been contributing to various projects over the last 5+ years and working with almost all the so-called 03 tiers(DB, M-Tier, and Client). Recently, he has started working with DevOps technologies such as Azure administration, Kubernetes, Terraform automation, and Bash scripting as well.

関連記事 - PowerShell CSV