ここからメソッドを使用します: Lua でテキスト ファイルの最後の行のみを読み取る方法は?
問題は、行が大きくなる場合があることです。
問題は、ファイルの最後から最初の単語「foo」を見つけて、それ以降のすべてを使用するにはどうすればよいですか?
ここからメソッドを使用します: Lua でテキスト ファイルの最後の行のみを読み取る方法は?
問題は、行が大きくなる場合があることです。
問題は、ファイルの最後から最初の単語「foo」を見つけて、それ以降のすべてを使用するにはどうすればよいですか?
問題は、線が大きくなることがあるということです。
次に、最後からさらに後ろを探す必要があります。
問題は、ファイルの終わりから最初の単語「foo」を見つけて、それ以降のすべてを使用するにはどうすればよいかということです。
ファイルの十分な大きさのチャンクを取得して、最後のfooがあることを確認します。これを使用.*foo
して、最後の「foo」までのすべてをスキップします(。*は貪欲です)。
local f = io.open('filename', 'r')
f:seek('end', -1024)
local text = f:read('*a')
local after = string.match(text, ".*foo(.*)")
f:close()
ファイルが大きすぎず、簡単な方法を取る準備ができている場合、これが役立つ場合があります。
fh=io.open('myfile.txt','rb')
str=fh:read'*a'
pat='foo'
afterFoo=str:match('.*'..pat..'(.*)$')
fh:close()
より複雑で高速な(大きなファイルでの実行時)ソリューションが必要な場合は、ファイルをチャンクで読み取り、それぞれを逆にして、パターンを逆に探すと思います。境界を越えてパターンを探すことを忘れないでください (チャンクは、少なくとも、一般的なケースで探しているパターンの長さをオーバーラップする必要があります)。
ブロック読み取りの詳細については、こちらの投稿を参照してください。