ファイルを指定行数ごとに分割するスクリプトを PowerShell と Bash で
何万行もある大容量のテキストファイルがあって、中身を見たいが重すぎて開けない。
そんな時は、ファイルを指定の行数で分割し、分割したファイルを参照するようにしたい。
それを実現する PowerShell コードがコチラ。
PS1> $i=0; cat .\src.log -ReadCount 5 | % { $_ > dest_$i.log; $i++ }
src.log
ファイルが分割したいファイル。コレを実行すると、-ReadCount 5
と指定しているとおり、5行ずつのテキストファイルに分割され、dest_1.log
・dest_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 でも、大容量のテキストファイルを参照できるようになっただろう。