【发布时间】:2019-10-07 08:37:26
【问题描述】:
我正在编写一个脚本来处理控制台中程序的输出。该程序会产生大量结果,我想动态过滤它们,以便只保留我需要的结果。
这是我目前所拥有的:
const {pipeline, Transform} = require('stream');
var readline = require('readline');
class FilterBlastOutput extends Transform {
constructor(options) {
super(options);
}
_transform(chunk,encoding,callback) {
if(chunk === '\u0003')
process.exit();
let row = chunk.split("\t");
if(row[3] >= 19 && row[4] <= 1)
callback(null,chunk);
}
}
// Added after suggestion to use readline module
var rl = readline.createInterface({
input: process.stdin,
output: process.stdout,
terminal: false
});
pipeline(
process.stdin,
new FilterBlastOutput(),
process.stdout,
err => {
if(err) {
console.log("Pipeline failed: ");
} else {
console.log('Pipeline succeeded.')
}
}
);
在管道(..)中,我使用 process.stdin。 而不是 process.stdin 我想获得一个以定义的块(行)提供数据的流。 我该怎么做?
谢谢, 延斯
【问题讨论】:
-
如果你想创建一个流来从一个圆角读取数据,使用'fs.createreadstream'
-
Node.js 有一个内置的readline 模块
-
好的,所以我添加了 readline。如何将其放入管道?
标签: javascript node.js stream