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/