http://stackoverflow.com/questions/10164597/how-would-you-implement-tail-efficiently
http://git.savannah.gnu.org/cgit/coreutils.git/tree/src/tail.c
I would work with the growing buffer read backwards.
It would be great fun doing that in Pharo.
On 27 Jun 2014, at 18:50, phil@highoctane.be wrote:
> Thanks.
>
> But this would give me the 200 last chars. I am interested in the 200 last lines.
>
> Now, I did this:
>
> command := 'tac ', file fullName, ' | head -200'.
> ^ (PipeableOSProcess command: command) output.
>
> which did the trick but isn't portable at all (Linux here).
>
> I had a look at RemoteString as well.
>
> Phil
>
>
> On Fri, Jun 27, 2014 at 6:21 PM, Guillermo Polito <guillermopolito@gmail.com> wrote:
> If you have a MultiByteFileStream you can do
>
> stream position: stream size - 200.
> stream next: 200.
>
> Have a look at RemoteString, which is the class used to read the source from the source and changes files (without loading all of them into memory)
>
>
> On Fri, Jun 27, 2014 at 6:15 PM, phil@highoctane.be <phil@highoctane.be> wrote:
> I wonder how you guys would read the last n lines from a file in Pharo without reading through the whole thing.
>
> Is there code doing just that somewhere?
>
> The code I have is a shell script doing a 'tac file | tail -200 > /temp/something'
>
> I can always do that through OSProcess but wondered if there was something available.
>
> Reading through with a 200-entries FIFO circular buffer seems a bit silly to do.
>
> TIA
> Phil
>
>
>
>