gpt4 book ai didi

javascript - 如何删除换行符并制作单行文本?

转载 作者:行者123 更新时间:2023-12-03 04:39:19 25 4
gpt4 key购买 nike

我有一个日志文件,其中事件分为多行。为了使事件成为单行,首先我必须将包含日期的行和不包含日期的行分开。现在我正在尝试编写一个逻辑来检查一行,如果它没有日期,则将其与 prevLine 合并。

如何使用正则表达式或任何其他有助于完成此任务的模块将多行合并为一行?

ctrl.js

var regex = /\[\d{4}-\d{2}-\d{2}T\d{2}:\d{2}:\d{2}\w+\]/;
var prevLine;
var readStream = fs.createReadStream(dir + '/' + logFile,'utf8');
readStream.pipe(split()).on('data', function (line) {
if (regex.test(line)) {
console.log('Line with date:', line);
parseLog(line,prevLine);
} else {
console.log('Line without date:', line);
line = prevLine + line;
}
function parseLog(line, prev) {
if (line.indexOf('|') === -1) line = prev + line;
}
});

文件数据

[2017-03-23T18:13:16Z]|verbose|bmid: n/a|infra.topicWorkers|topology changed, emitting topology event { newTopology: 
[ '-0000001337',
'-0000001338',
'-0000001339',
'-0000001340',
'-0000001341',
'-0000001342' ],
oldTopology:
[ '-0000001337',
'-0000001338',
'-0000001339',
'-0000001340',
'-0000001341' ],
workerId: 6,
pid: 30488 }
[2017-03-23T18:13:16Z]|verbose|bmid: n/a|infra.topicWorkers|topology changed, emitting topology event { newTopology:
[ '-0000001337',
'-0000001338',
'-0000001339',
'-0000001340',
'-0000001341',
'-0000001342' ],
oldTopology: [],
workerId: 4,
pid: 30481 }

最佳答案

你可以这样做:

const split = require('split');
const regex = /\[\d{4}-\d{2}-\d{2}T\d{2}:\d{2}:\d{2}\w+\]/;
let items = [];
let item = [];
fs.createReadtStream(path.join(dir, logFile), 'utf8')
.pipe(split()).on('data', (line) => {
if (regex.test(line)) {
item = [];
items.push(item);
}
item.push(line);
});
let lines = items.map(item => item.join(' '));
lines.forEach(line => console.log(line));

每次有新行时,您都可以向数组中添加新行,但是当有带有日期的行时,您可以将该数组放入另一个数组中,并为这些单行创建一个新数组。然后,您可以通过连接内部数组中的元素来组合它们,您将拥有一个大型组合行数组 - 在该示例中称为 lines 的数组。

关于javascript - 如何删除换行符并制作单行文本?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/43148701/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com