- ベストアンサー
※ ChatGPTを利用し、要約された質問です(原文:文字列検索)
テキストファイルの検索方法と性能について
このQ&Aのポイント
- テキストファイルの検索を効率的に行いたい場合、関数でgrepを使用する方法があります。しかし、grepはマッチした行しか返さないため、1行内でのマッチ回数を返す関数は存在しません。
- 大量のファイルを処理する場合には、mecabを用いて形態素解析を行うことも考えられます。ただし、オーバーヘッドが気になる場合もあるため、効率的な方法を選択する必要があります。
- テキストファイル内の特定の文字列を検索する際には、標準関数を用いて1行ずつ読み込み、1行内でのマッチ回数を返す関数を自分で実装する必要があります。この方法を使用することで、検索性能を向上させることができます。
- みんなの回答 (1)
- 専門家の回答
質問者が選んだベストアンサー
scanを利用すれば可能でしょうか? def counter d,w d.scan(%r{#{w}}).length if d.scan(%r{#{w}}).length > 0 end #1行ずつ読み込み、各行でマッチした個数を配列に格納し返す。 p open("sample.txt","r").each_line.map{|line| counter line,"foo" } #ファイルを全部読み込んで、マッチした個数を返す。 p counter File.read("sample.txt"),"foo"