Вы можете реализовать поток Transform для этой цели, если хотите, в этом примере мы просто нумеруем слова, но вы можете делать все, что вам нужно, в функции _transform. Во-первых, вам, возможно, придется иметь дело с кусками, разбитыми на слова, однако это должно быть легко сделать.
const fs = require("fs");
const stream = require("stream");
const Transform = stream.Transform;
let wordIndex = 0;
class streamSplitter extends Transform {
_transform(chunk, enc, done) {
let words = chunk.toString("utf8").split(/\s+/g);
// Process words here. In this example we'll simply attach a number to each word.
let processedChunk = words.map(word => `Word #${++wordIndex}: ${word}`).join("\n");
done(null, processedChunk);
}
}
fs.createReadStream('inputfile.txt')
.pipe(new streamSplitter())
.pipe(fs.createWriteStream('outputfile.txt'))