3

私は現在Node.jsを使用していますが、大きなテキストファイルからある範囲の行をどのように読み取るのか疑問に思っています。明らかな解決策は次のようになります。

var fs = require('fs');
fs.readFile(file, function(err, data) {
  var lines = data.split('\n');
});

ただし、これにはファイル全体をメモリにロードする必要があり、100MB以上のような大きなテキストファイルには実用的ではありません。

Bashでは、通常sed、この場合に使用します。

4

1 に答える 1

4

怠惰な場合

var fs   = require('fs'),
    lazy = require('lazy');

var x = 23;
var y = 42;
var lines = (
   lazy(fs.createReadStream('./large.txt'))
     .lines
     .skip(x - 1)
     .take(y - x + 1)
);
lines.forEach(function(line) {
    console.log(line.toString('utf-8'));
});
于 2012-08-12T21:55:52.180 に答える