PowerShell で CSV ファイルを結合する方法
-
CSV形式 -
PowerShell で
.csvファイルをフィルタリングする -
PowerShell で各
.csvファイルオブジェクトを取得する - PowerShell で CSV ファイルの内容をマージする
- PowerShell でマージされた内容をテキストファイルに書き込む
複数の CSV ファイルをマージし、そのデータを PowerShell でテキストファイルに書き込む必要がある場合があります。Import-Csv および Export-Csv コマンドレットを使用してこの操作を実行できます。
CSV 形式
さまざまな目的のために利用できるさまざまなファイル形式があります。CSV は、データを保存するためのシンプルな構造を使用します。
異なるプログラム間でデータを交換するために使用できます。その名前 CSV(カンマ区切り値)が示すように、データはカンマで区切られています。
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 ファイルを作成しましょう。

username.csv の内容:

username2.csv の内容:

PowerShell で .csv ファイルをフィルタリングする
指定された場所にあるすべての .csv ファイルタイプを取得するために、Get-ChildItem コマンドレットを使用することをお勧めします。 -Filter パラメーターを渡して .csv 拡張子のファイルをフィルタリングできます。
.csv ファイルへのフォルダーパスは、あなたの場合に異なるかもしれません。
$csvFilePath = "D:\csvfiles"
$csvFileList = Get-ChildItem $csvFilePath -Filter *.csv
$csvFileList にあるコンテンツを確認しましょう。
$csvFileList
出力:

PowerShell で各 .csv ファイルオブジェクトを取得する
フルネームを持つ各ファイルオブジェクトを取得しましょう。Select-Object コマンドレットを使用して、拡張されたプロパティを持つ各オブジェクトを取得できます。
前のステップの出力を Select-Object コマンドにパイプしています。
$csfFilesToImport = $csvFileList | Select-Object -ExpandProperty FullName
$csfFilesToImport 変数を表示すると、両方の CSV ファイルオブジェクトがフルネームで利用可能であることがわかります。
$csfFilesToImport
出力:

PowerShell で CSV ファイルの内容をマージする
すべての CSV ファイルを取得したので、各ファイルの内容をインポートしましょう。これにより、共通のヘッダーローで内容を簡単にマージできます。
パイプで渡された CSV ファイルの内容から表のようなオブジェクトを構築するために Import-CSV を使用できます。
$importedCsvFiles = $csfFilesToImport | Import-Csv
$importedCsvFiles
出力:

情報は提供された 2つの CSV ファイルからマージされました。
PowerShell でマージされた内容をテキストファイルに書き込む
上記のオブジェクトを CSV 文字列に変換し、それらをテキストファイルに保存できます。Export-Csv コマンドレットが使用可能です。
内容が置き換えられずに追加されることを確認するために、Append パラメーターを使用する必要があります。
$importedCsvFiles | Export-Csv D:\merged.txt -NoTypeInformation -Append
出力:
これにより、merged.txt という新しいテキストファイルが作成されるはずです。そのファイルの内容は、上記の 2つの CSV ファイルからマージされることになります。

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.
