
PowerShellで
・テキストファイルをソートして、重複行を削除
できます!
コード
ここでは例として
・デスクトップ配下のテキストファイル「sample.txt」をソートして、重複行を削除
します。


# 対象ファイル
$targetFile = "C:\Users\user\Desktop\sample.txt"
$ws = New-Object -ComObject Wscript.Shell
try
{
# 昇順でソートして重複削除
(Get-Content $targetFile -ErrorAction Stop) | Sort-Object -Unique | Out-File -Encoding default $targetFile
# 降順でソートして重複削除
# (Get-Content $targetFile -ErrorAction Stop) | Sort-Object -Descending -Unique | Out-File -Encoding default $targetFile
$ws.popup("ソート(重複削除含む)に成功しました。")
}
catch
{
$ws.popup("エラー : " + $PSItem)
}
実行結果
テキストファイルをソートして、重複行を削除できました。


参考①
「見出し(最初の1行)」をソート及び重複行削除の対象外にすることもできます。
# 対象ファイル
$targetFile = "C:\Users\user\Desktop\sample.txt"
$ws = New-Object -ComObject Wscript.Shell
try
{
# 見出し(最初の1行)を取得
$headLine = (Get-Content $targetFile -ErrorAction Stop) | Select-Object -First 1
# 見出し以外を取得して、昇順でソートかつ重複行が削除された内容を取得
$contents = (Get-Content $targetFile -ErrorAction Stop) | Select-Object -Skip 1 | Sort-Object -Unique
# 元のファイルに見出しを出力
Write-Output $headLine | Out-File -Encoding default $targetFile
# 元のファイルに見出し以外をの昇順でソートかつ重複行が削除されたされた内容を出力
Write-Output $contents | Out-File -Encoding default $targetFile -Append
$ws.popup("ソート(重複削除含む)に成功しました。")
}
catch
{
$ws.popup("エラー : " + $PSItem)
}
参考②
上記のコードで使用した以下の詳細は、公式サイトをご確認ください。
●コマンドレット「Get-Content」
●「Sort-Object」コマンドレット
●「Out-File」コマンドレット