それマグで!

知識はカップより、マグでゆっくり頂きます。 takuya_1stのブログ

習慣に早くから配慮した者は、 おそらく人生の実りも大きい。

csplit コマンド ruby 版、区切り文字をファイル名にする

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

ファイルが分割されたのでこれで良しとする.
一枚のファイルに複数のファイル内容を押し込むようなシステム書くのはアリだと思うが,読込手法を確立してからして欲しいと思ったり.