首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >文件解析-如何仅在下一行包含特定单词时识别特定行

文件解析-如何仅在下一行包含特定单词时识别特定行
EN

Stack Overflow用户
提问于 2019-03-13 00:05:25
回答 1查看 50关注 0票数 2

我有一个大约50k行的大文件。只有当下一行中包含某个单词时,我才需要将一行中的数据输入到数据库中。例如

代码语言:javascript
复制
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行有“域名黑名单”。

你觉得我该怎么做?

保罗

EN

回答 1

Stack Overflow用户

发布于 2019-03-13 00:49:29

使用File functions遍历文件,一次一行。使用一个单独的变量来跟踪“上一行”(在每次迭代结束时更新它)。在循环中,检查当前行中的神奇短语。如果找到了,将前面的行变量追加到结果数组中。完成后,可以随意使用行的数组。

代码语言:javascript
复制
<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>
票数 2
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/55125960

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档