[Haskell-cafe] Efficient way to edit a file

Donald Bruce Stewart dons at cse.unsw.edu.au
Thu Jun 1 22:10:49 EDT 2006


dons:
> briqueabraque:
> >   Hi,
> > 
> >   I need to edit big text files (5 to 500 Mb). But I just need to 
> > change one or two small lines, and save it. What is the best way to do 
> > that in Haskell, without creating copies of the whole files?
> > 
> 
> I'd think maybe a lazy bytestring would be ok.
> 
> Something like:
>   import Data.ByteString.Lazy.Char8
>   B.putStr . B.unlines . B.map edit . B.lines =<< B.getContents
> 
> in the darcs version of Data.ByteString, here, http://www.cse.unsw.edu.au/~dons/fps.html
> Let me know how you go, it would make a good benchmark.

Oh, of course, if you actually don't want to copy the file, you'll need
to strictly read the input file, in order to write over it safely.

- Don


More information about the Haskell-Cafe mailing list