From: matz@... (Yukihiro Matsumoto) Date: 1999-01-25T11:24:40+09:00 Subject: [ruby-list:11708] Re: grep したいのに・・・ まつもと ゆきひろです In message "[ruby-list:11706] grep したいのに・・・" on 99/01/25, Atsuko Yoshida writes: |こんにちは。あつこです。 | |またまた単純な質問で申し訳ないのですが、grepの使い方について伝授して |欲しいんです。 |シェルでいうと、 |tail -1 abcfile | grep "*********" |的なことなんです。 あー,それはですね. |<rubyでは・・・?> | def TrailerCheck(fullname) | fnm = File.open(fullname,'r') | $pat = "*********" | print "pat : #{$pat}\n" | print "file line : \n" | print fnm.to_a ここでto_aでファイルの内容をもう全部読んじゃってるんで, | #print fnm.find {|line| print "ok\n" if $pat === line } | print fnm.grep($pat) それ以降のfindにもgrepにもひっかからないんですね.ですから * to_aの結果(文字列の配列)に対してfind/grepする * to_aを行わない のいずれかが必要なんじゃないかと思います. さらに "*********"の"*"は正規表現のメタキャラクタなんで,エ スケープする必要があります. これででパターンを探せるんじゃないかと思います.でも,最後の 行とのマッチで,ファイルサイズがあまり大きくないのが分かって いるなら, def TrailerCheck(fullname) File.readlines(fullname).pop =~ Regexp.escape("*********") end なんてのでできるんじゃないかなあ,と思います.配列で読み込ん で,最後の行を取り出して,エスケープしてからマッチですね. まつもと ゆきひろ /:|)