ファイルを指定行数ごとに分割するスクリプトを PowerShell と Bash で

何万行もある大容量のテキストファイルがあって、中身を見たいが重すぎて開けない。

そんな時は、ファイルを指定の行数で分割し、分割したファイルを参照するようにしたい。

それを実現する PowerShell コードがコチラ。

PS1> $i=0; cat .\src.log -ReadCount 5 | % { $_ > dest_$i.log; $i++ }

src.log ファイルが分割したいファイル。コレを実行すると、-ReadCount 5 と指定しているとおり、5行ずつのテキストファイルに分割され、dest_1.logdest_2.log といったファイルが同ディレクトリに生成される。

実際に大容量のテキストファイルを区切るなら、1万行ずつぐらいで区切るとちょうど良いだろう。


同様の処理を Bash で行うには以下のように実行する。

$ split -d --additional-suffix='.log' -l 5 ./src.log 'dest_'

split コマンドを使い、-l 5 部分で分割する行数を指定する。分割後のファイル名を、PowerShell 版と同じく dest_01.log のような連番にするため、-d --additional-suffix='.log' というオプションを付けている。デフォルトだと xaa のようなアルファベットのファイル名になってしまうため、少なくとも -d で数字の連番にしておくと扱いやすいだろう。


以上。コレで、Windows でも Mac / Linux でも、大容量のテキストファイルを参照できるようになっただろう。