【PowerShell】テキストファイルをソートする

PowerShellで
 ・テキストファイルをソート
できます!

PR

コード

ここでは例として
 ・デスクトップ配下のテキストファイル「sample.txt」をソート
します。

テキストファイル「sample.txt」
テキストファイル「sample.txt」
テキストファイル「sample.txt」の内容(ソートされていない)
テキストファイル「sample.txt」の内容(ソートされていない)
# 対象ファイル
$targetFile = "C:\Users\user\Desktop\sample.txt"

$ws = New-Object -ComObject Wscript.Shell

try
{
    # 昇順でソート
    (Get-Content $targetFile -ErrorAction Stop) | Sort-Object | Out-File -Encoding default $targetFile 
    # 降順でソート
    # (Get-Content $targetFile -ErrorAction Stop) | Sort-Object -Descending | Out-File -Encoding default $targetFile 

    $ws.popup("ソートに成功しました。")
}
catch
{
    $ws.popup("エラー : " + $PSItem)
}

対象ファイルを指定します(2行目)。

「Get-Content」コマンドレットにより「対象ファイル」を取得します(9行目)。

「Sort-Object」コマンドレットにより「ソート」します(9行目)。
※演算子「-Descending」を付けない場合、昇順でソートされます。

「Out-File」コマンドレットによりソート後の内容を対象ファイルへ書き込みます(9行目)。

PR

実行結果

テキストファイルをソートできました。

実行結果①
実行結果①
実行結果②
実行結果②
PR

参考①

「見出し(最初の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
    
    # 元のファイルに見出しを出力
    Write-Output $headLine | Out-File -Encoding default $targetFile 
    # 元のファイルに見出し以外をの昇順でソートされた内容を出力
    Write-Output $contents | Out-File -Encoding default $targetFile -Append

    $ws.popup("ソートに成功しました。")
}
catch
{
    $ws.popup("エラー : " + $PSItem)
}
PR

参考②

上記のコードで使用した以下の詳細は、公式サイトをご確認ください。

●コマンドレット「Get-Content」


●「Sort-Object」コマンドレット


●「Out-File」コマンドレット

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