csplit は便利なんだけど.csplit はファイル名が連番になって嬉しくなかった.
そこでRubyで書いてみた
出力ファイル名を区切り文字にした
##あああ ここ ##いいい さらに
を処理すると
あああ.txt いいい.txt
になるようにした。
使い方
csplit.rb サンプル.txt '##(.+)'
csplit.rb
#!/usr/bin/env ruby KCODE='u' f= open(ARGV.shift) delim = ARGV.shift out = open("head.txt", "w") begin while line = f.readline if line =~ %r"^(#{delim})$" match= $1 out = open("#{match}.txt","w") next end out.puts line if out end rescue EOFError => e puts "最後まで読み込みました." end
ファイルが分割されたのでこれで良しとする.
一枚のファイルに複数のファイル内容を押し込むようなシステム書くのはアリだと思うが,読込手法を確立してからして欲しいと思ったり.