テキストファイルの改行コードを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() }