我有一个大约50k行的大文件。只有当下一行中包含某个单词时,我才需要将一行中的数据输入到数据库中。例如
00:00:01 Request from 1.1.1.1 for A-record for www.website1.com
00:00:01 Sending reply to 1.1.1.1 about A-record for www.website1.com:
00:00:01 -> Answer: A-record for www.website1.com = 999.999.999.999
00:00:02 Request from 1.1.1.1 for A-record for www.website2.com
00:00:02 Plug-in "Domain Blacklist1" matched A-record for www.website2.com
00:00:03 Request from 1.1.1.1 for A-record for www.website3.com
00:00:04 Sending reply to 1.1.1.1 about A-record for www.website3.com:
00:00:01 -> Answer: A-record for www.website3.com = 888.888.888.888我只想输入第4行的数据,因为第5行有“域名黑名单”。
你觉得我该怎么做?
保罗
发布于 2019-03-13 00:49:29
使用File functions遍历文件,一次一行。使用一个单独的变量来跟踪“上一行”(在每次迭代结束时更新它)。在循环中,检查当前行中的神奇短语。如果找到了,将前面的行变量追加到结果数组中。完成后,可以随意使用行的数组。
<cfscript>
matched = [];
previousLine = "";
theFile = fileOpen("c:/path/to/your/file.txt");
try {
while(!fileIsEOF(theFile)) {
currentLine = fileReadLine(theFile);
// if phrase is found in *this* line, store *previous* line
if (reFindNoCase("(Domain Blacklist)", currentLine)) {
arrayAppend(matched, previousLine );
}
// update previous line
previousLine = currentLine;
}
}
finally {
theFile.close();
}
// do something with the results
writeDump(var=matched, label="Matched Lines");
</cfscript>https://stackoverflow.com/questions/55125960
复制相似问题