PowerShellでCSVファイルからリストに一致する行を抽出してソートする

様々なデータが含まれたCSVファイルから、リスト内の文字列が含まれる行のみを選択し、その文字列でソートする処理を自動化します。

以前、スクリプト作成の仕事の依頼があったので、その備忘録です。


今回はメールアドレスを対象とします。


1.整形対象データ

例として、メールアドレスが含まれた下記のようなCSVファイルを用意します。

ユーザー名,ユーザーメール,社員番号
鈴木 一郎,hogehoge@xxxx.com,0001
鈴木 二朗,testtest@xxxx.com,0002
木村 一郎,aaaa@xxxx.com,0003
木村 二郎,bbbb@xxxx.com,0004



2.検索に用いるリスト

例として、下記のようなメールアドレスを羅列したファイルを用意します。

hogehoge@xxxx.com
bbbb@xxxx.com
aaaa@xxxx.com



3.PowerShellスクリプト

下記の内容のPowerShellスクリプトを実行します。

ファイルの場所は適宜変更してください。

#ログファイル出力先
$LogFile = “C:\work\Data_Extraction_Mail.log”

Start-Transcript $LogFile

#読み込む検索リストファイル
$SearchFile = “C:\work\MailAddress.csv”
#読み込むデータファイル
$DataFile = “C:\work\Data.csv”
#出力ファイル
$ExportFile = “C:\work\Result_Mail.csv”

#ファイル読み込み
$SearchList = Get-Content $SearchFile -Encoding UTF8
$DataList = Import-Csv $DataFile

#検索リストを基に対象行を抽出
$Extraction = $DataList | Where-Object -FilterScript { $SearchList -contains $_.ユーザーメール }

#抽出した行のソート
$Sort = $Extraction | Sort-Object -Property “メールアドレス”

#抽出リストのエクスポート
$Sort | Export-Csv $ExportFile -Encoding UTF8 -NoTypeInformation

Stop-Transcript



4.エクスポート結果

スクリプトを実行した結果、「$ExportFile」が作成されます。

下記のようにリスト内のメールアドレスが含まれる行、およびメールアドレスでソートされた結果がエクスポートされます。

ユーザー名,ユーザーメール,社員番号
木村 一郎,aaaa@xxxx.com,0003
木村 二郎,bbbb@xxxx.com,0004
鈴木 一郎,hogehoge@xxxx.com,0001

コメント

タイトルとURLをコピーしました