テキストファイルを分割する

logファイルを分析したかったのだけれど、ファイルが大きくなりすぎて動きが悪くて困ったとき、ファイルを小分けにしたくなった。

$utf8n = New-Object System.Text.UTF8Encoding $False; $path = ‘C:\Users\name\testsplit’; $i = 1; Get-Content “$path\File_0.txt” -ReadCount 10000 | % {[System.IO.File]::WriteAllLines(“$path\splitf_$i.txt”, $_, $utf8n); $i++}

$utf8n = New-Object System.Text.UTF8Encoding $False;

UTF-8エンコーディングオブジェクトを生成し、BOM(Byte Order Mark)を付けない設定。

$path = ‘C:\Users\name\testsplit’;

フォルダのパスを設定。

$i = 1;

ファイル名に使用する変数を定義。

Get-Content “$path\File_0.txt” -ReadCount 10000

Get-Content “$path\(元ファイル名).txt” で中身を取得。
-ReadCount (行数)  で行数指定。

| % {[System.IO.File]::WriteAllLines(“$path\splitf_$i.txt”, $_, $utf8n); $i++}

| (パイプライン)前に取得した結果を %{(処理)}で繰り返し実行する。