我正在使用fs读取文件的内容,然后在该文件中搜索特定的单词,如果该文件包含该单词而不是返回布尔值或该单词,则我希望输出包含关键字的行。如何输出整行?
const fs = require("fs");
let file = fs.readFileSync("read.txt", "utf8");
if(file.indexOf("keyword") >= 0) {
console.log("Line of the keyword");
}
如果该行包含关键字,我只希望console.log()输出该行。
答案 0 :(得分:5)
让我们首先尝试用新行将文件中的字符串分割开。然后可以在结果数组中搜索关键字的出现。如果搜索成功,则打印与行号相同的数组索引。
const fs = require("fs");
let file = fs.readFileSync("read.txt", "utf8");
let arr = file.split(/\r?\n/);
arr.forEach((line, idx)=> {
if(line.includes("keyword")){
console.log((idx+1)+':'+ line);
}
});
答案 1 :(得分:0)
我知道您只是想注销结果,但是看到另一种方法可能会很有趣,该方法包括写入文件以及使用设计用于逐行读取文件的软件包。将来可能会有所帮助。
const readline = require("linebyline");
const fs = require('fs');
const rl = readline('sample.txt');
rl.on('line', function (line, lineCount, byteCount) {
console.log(lineCount); // this is not zero-based
// do something with the line of text
// line = line.substr(3).substr(0, 9); or whatever
if (line.includes("yourSearchWord") {
fs.appendFileSync('modified.txt', lineCount + ":" + line + '\n');
// or console.log(lineCount + ":" + line);
}
});
rl.on('error', function(e) {
// something went wrong
});