PowerShell で CSV ファイルを組み合わせる
-
CSV
フォーマット -
PowerShell で
.csv
ファイルをフィルタリングする -
PowerShell で各
.csv
ファイルオブジェクトをフェッチする - PowerShell で CSV ファイルのコンテンツをマージする
- PowerShell でマージされたコンテンツをテキストファイルに書き込む
複数の 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
ファイルを作成しましょう。
username.csv
コンテンツ:
username2.csv
コンテンツ:
PowerShell で .csv
ファイルをフィルタリングする
Get-ChildItem
コマンドレットを使用して、指定した場所にあるすべての .csv
ファイルタイプをフェッチすることをお勧めします。 -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
ファイルを取得したので、各ファイルのコンテンツをインポートしましょう。これにより、コンテンツが共通のヘッダー行に簡単にマージされます。
Import-CSV
を使用して、パイプされた 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.