hexacyanide hexacyanide - 6 months ago 311
Node.js Question

Node.js: Count the number of lines in a file

I have large text files, which range between

30MB
and
10GB
. How can I count the number of lines in a file using
Node.js
?

I have these limitations:


  • The entire file does not need to be written to memory

  • A child process is not required to perform the task


Answer

solution without using wc:

var i;
var count = 0;
require('fs').createReadStream(process.argv[2])
  .on('data', function(chunk) {
    for (i=0; i < chunk.length; ++i)
      if (chunk[i] == 10) count++;
  })
  .on('end', function() {
    console.log(count);
  });

it's slower, but not that much you might expect - 0.6s for 140M+ file including node.js loading & startup time

>time node countlines.js video.mp4 
619643

real    0m0.614s
user    0m0.489s
sys 0m0.132s

>time wc -l video.mp4 
619643 video.mp4
real    0m0.133s
user    0m0.108s
sys 0m0.024s

>wc -c video.mp4
144681406  video.mp4