長いタイトルですが、仕事であるファイル(たとえばmbox形式の1ファイルとか)に「From:」という文字列がいくつもあり、そのFrom:行でスプリットして複数のファイルに分けたい場面がありました。perlでやろうかと思ったのですが、コマンドでないのかと思い、探してみたらやっぱりありました。
csplitというコマンドです。
使い方は、manを見てください。…というのもあれなので、上記の状況の場合には
% csplit -f "x" -b "%04d" web02-top.log '/^From:.*/' '{*}'
とすると分割されたデータがx0000、x0001…というファイル名のファイルに出力されます。引数は順番に、
-fオプションは、分割したファイルのプレフィックス。x0000ってファイルが出来る。
-bオブションは、分割したファイルの連番の部分のフォーマット。
分割前のファイル
分割する文字列の正規表現
分割回数(この場合は*なので、できる限り分割)
となっています。こんなコマンドあったのね…。

コメントする