テキストファイルの改行コードをCR+LFをLFに変換する

テキストファイルの改行コードをCR+LFをLFに変換してみました。変換方法は-replace演算子を使用します。-replace演算子正規表現のパターン文字列を特定の文字列に変換できます。CR+LFは正規表現でいうと「\x0d\x0a」です。また、Powershellでは「`r`n」(`rがCRで`nがLF)というエスケープシーケンスが使えます。そのため変換後の文字列としては「`n」というように指定可能です。

以下プログラムです。

set-PSDebug -strict
# -----------------------------
# CR+LFをLFに変換する
# -----------------------------
function ReplaceNewLineCode{
    # 引数を取得
    param([string]$infile_path)
    
    # 出力ファイル名作成
    $outfile_path = (get-item $infile_path).directoryname + "\" + (get-item $infile_path).basename + "_LF.txt"
    
    # 変換パターン設定
    $pattern1 = "\x0d\x0a"  # 変換元
    $pattern2 = "`n"  # 変換後
    
    # 読み書きのencoding設定
    $encoding = [system.Text.Encoding]::GetEncoding("shift_jis")
    
    # テキスト読み込み
    $stream_r = new-Object system.IO.StreamReader($infile_path,$encoding)
    $buff = $stream_r.Readtoend()
    $stream_r.close()
        
    # 変換
    $buff = $buff -replace $pattern1,$pattern2
        
    # テキスト書き込み
    $stream_w = new-Object system.IO.Streamwriter($outfile_path,$encoding)
    $stream_w.write($buff)
    $stream_w.close()
}