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

前端 未结 10 668
一向
一向 2020-12-02 23:02

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 hav

10条回答
  •  青春惊慌失措
    2020-12-02 23:29

    since iojs 1.5.0 there is Buffer#indexOf() method, using it to compare to Andrey Sidorov' answer:

    ubuntu@server:~$ wc logs
      7342500  27548750 427155000 logs
    ubuntu@server:~$ time wc -l logs 
    7342500 logs
    
    real    0m0.180s
    user    0m0.088s
    sys 0m0.084s
    ubuntu@server:~$ nvm use node
    Now using node v0.12.1
    ubuntu@server:~$ time node countlines.js logs 
    7342500
    
    real    0m2.559s
    user    0m2.200s
    sys 0m0.340s
    ubuntu@server:~$ nvm use iojs
    Now using node iojs-v1.6.2
    ubuntu@server:~$ time iojs countlines2.js logs 
    7342500
    
    real    0m1.363s
    user    0m0.920s
    sys 0m0.424s
    ubuntu@server:~$ cat countlines.js 
    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);
      });
    ubuntu@server:~$ cat countlines2.js 
    var i;
    var count = 0;
    require('fs').createReadStream(process.argv[2])
      .on('data', function(chunk) {
        var index = -1;
        while((index = chunk.indexOf(10, index + 1)) > -1) count++
      })
      .on('end', function() {
        console.log(count);
      });
    ubuntu@server:~$ 
    

提交回复
热议问题