Techioz Blog

Ruby でファイル内の文字列を検索し、結果を出力する

概要

このような目的で Ruby を使用するのはかなり久しぶりですが、ファイルを開いたり、文字列を検索したり、Ruby が見つけたものを出力したりする方法を忘れてしまいました。私が持っているものは次のとおりです。

#!/usr/bin/env ruby
f = File.new("file.txt")
text = f.read
if text =~ /string/ then
puts test
end

config/routes.rb 内の「ドキュメントルート」(ルート)が何であるかを確認したい

文字列を出力すると、ファイルも出力されます。

これが何なのか覚えていないのは愚かな気がしますが、知る必要があります。

うまくいけば、これを印刷できるようになります:

# Route is:
blah blah blah blah

解決策

File.open 'file.txt' do |file|
  file.find { |line| line =~ /regexp/ }
end

これにより、正規表現に一致する最初の行が返されます。一致するすべての行が必要な場合は、find を find_all に変更します。

効率も向上します。ファイル全体をメモリにロードすることなく、一度に 1 行ずつ反復処理されます。

また、grep メソッドも使用できます。

File.foreach('file.txt').grep /regexp/