我的应用程序中生成了一个日志文件。需要读取该文件并从该文件中提取所有IP地址。我正在使用的编程语言是Nodejs。代码如下。不知道我在做什么错。
const fs = require("fs");
fs.readFile("sample.log", null, (err, data) => {
if (err) {
console.log("Error reading the file");
} else {
const fileData = data.toString();
const ipRegex = /^((25[0-5]|2[0-4][0-9]|[01]?[0-9][0-9]?)\.){3}(25[0-5]|2[0-4][0-9]|[01]?[0-9][0-9]?)$/gm;
var arr = fileData.match(ipRegex);
console.log(arr);
}
});
当日志文件如下所示时,它可以正常工作
10.55.20.116
10.55.20.184
10.55.20.187
10.55.20.45
10.55.20.7
但是,当输入像下面这样时,它将抛出空值。
tcp.0: [1609172718.597749195, {"HOSTNAME":"sample-audi-lbs-1","IP":"10.55.17.231"}]
tcp.0: [1609172718.597749195, {"HOSTNAME":"sample-audi-lbs-1","IP":"10.55.17.232"}]
tcp.0: [1609172718.597749195, {"HOSTNAME":"sample-audi-lbs-1","IP":"10.55.17.233"}]
tcp.0: [1609172718.597749195, {"HOSTNAME":"sample-audi-lbs-1","IP":"10.55.17.234"}]
tcp.0: [1609172718.597749195, {"HOSTNAME":"sample-audi-lbs-1","IP":"10.55.17.235"}]
该^
开始线的方式和$
手段行结束。如果整个行只是IP地址,它将起作用,但是,如果您需要将IP从行的任何部分拔出,请删除这两个字符。在下面工作:
const fileData = `
tcp.0: [1609172718.597749195, {"HOSTNAME":"sample-audi-lbs-1","IP":"10.55.17.231"}]
tcp.0: [1609172718.597749195, {"HOSTNAME":"sample-audi-lbs-1","IP":"10.55.17.232"}]
tcp.0: [1609172718.597749195, {"HOSTNAME":"sample-audi-lbs-1","IP":"10.55.17.233"}]
tcp.0: [1609172718.597749195, {"HOSTNAME":"sample-audi-lbs-1","IP":"10.55.17.234"}]
tcp.0: [1609172718.597749195, {"HOSTNAME":"sample-audi-lbs-1","IP":"10.55.17.235"}]`;
const ipRegex = /((25[0-5]|2[0-4][0-9]|[01]?[0-9][0-9]?)\.){3}(25[0-5]|2[0-4][0-9]|[01]?[0-9][0-9]?)/gm;
var arr = fileData.match(ipRegex);
console.log(arr);
本文收集自互联网,转载请注明来源。
如有侵权,请联系[email protected] 删除。
我来说两句