ファイルの中から、正規表現を用いて、特定のパターンを含む行のみを抽出してみます。
まずは、データファイルの中身です。
month.dat
January February March April May June July August September October November December
実行ファイルです。
month.rb
pattern = Regexp.new(ARGV[0])
filename = ARGV[1]
file = open(filename)
count = 0 # データ数(行数)
while data = file.gets # 1行ずつデータ読み込み
if pattern =~ data
puts data
count += 1
end
end
print "count: ", count, "\n"
file.close
「pattern = Regexp.new(ARGV[0])」で正規表現オブジェクトを作り、while文の中の「if pattern =~ data」でパターンマッチングを評価しています。
month.datのデータから、文字列「ber」を含む月のみを抽出してみます。
一つ目の引数にパターン(ARGV[0])、2つ目の引数にファイル名(ARGV[1])を指定して、コマンドラインからmonth.rbを実行します。
ruby month.rb ber month.dat
と、コマンドラインから実行を行いますと、実行結果は・・・。
September October November December count: 4
となります。
■この記事のトラックバックURL:
http://www.mapee.jp/mpe334/mt-tb.cgi/324