01 =begin
02
03 lineno.rb:
04
05 テキストファイルを読み込んで,各行の先頭に行番号を付加して
06 指定されたファイルに書き込む.
07
08 =end
09
10 # 引数の個数チェック -> 足りない場合は終了
11 if ARGV.size < 2
12 STDERR.print "#{File.basename($0)} inputfile outputfile\n"
13 exit(1)
14 end
15
16 infile=ARGV.shift # 入力ファイル名
17 outfile=ARGV.shift # 出力ファイル名
18
19 # 入力ファイルから1行ずつ読みこんで配列に取り込む
20 in_lines = []
21 File.open(infile,"r") do |fin|
22 while line = fin.gets
23 in_lines.push(line)
24 end
25 end
26
27 n = in_lines.size # 行数
28 d = Math.log10(n).floor + 1 # nの10進数での桁数
29 fmt = "%0#{d}d %s" # d桁の数字を付加する出力書式
30
31 # ファイルへの出力
32 File.open(outfile,"w") do |fout|
33 in_lines.each_with_index do |line,j|
34 fout.puts fmt % [j+1,line]
35 end
36 end