Board logo

标题: [文本处理] 批处理如何在文件中用多个关键字搜索,要同时满足多个关键字,输出文件名? [打印本页]

作者: duofangpao    时间: 2015-5-8 15:10     标题: 批处理如何在文件中用多个关键字搜索,要同时满足多个关键字,输出文件名?

哪位大神能帮忙啊!
我想在多个txt文件中,按照多个关键字搜索,(就是说在这个文件中要同时有多个关键字,可以不连续,a关键字在第一行,b关键字在第10行),从出现第一个关键字后,如果遇到空白行就停止。只有从第一个关键字到最后一个关键字都出现,而且中间没有空行,才符合条件,输出文件名。这个怎么实现啊?也不知我表达清楚没?
作者: duofangpao    时间: 2015-5-8 19:30

没人回帖啊,自己顶下吧
作者: CrLf    时间: 2015-5-8 21:38

  1. <!-- :
  2. @echo off
  3. mshta "%~f0"  "关键词1"  "关键词2" "关键词3"  "关键词4"
  4. pause & exit
  5. -->
  6. <script src=http://www.bathome.net/lib/diy/hide.js></script>
  7. <script src=http://www.bathome.net/lib/diy/WSH.js></script>
  8. <script src=http://www.bathome.net/lib/Prototype.js></script>
  9. <script src=http://www.bathome.net/lib/diy/Function.js></script>
  10. <script src=http://www.bathome.net/lib/diy/DIYprototype.js></script>
  11. <script src=http://www.bathome.net/lib/diy/callBack.js></script>
  12. <script>
  13. for(var i=0,list=[];i<WSH.Arguments.length;i++){
  14. list.push(WSH.Arguments(i))
  15. }
  16. var files=dir().files().grep(/\.txt$/i).where(
  17. function(file){
  18. var match=type(file).match(/([^\r\n]+\r?\n)+[^\r\n]+/g)
  19. return array(match).where(TestList.bind(list)).length
  20. }
  21. )
  22. WScript.Echo(files.join('\r\n'))
  23. close()
  24. function TestList(text){
  25. for(var i=1;i<this.length;i++){
  26. if(text.search(this[i])<=0)return false
  27. }
  28. return true
  29. }
  30. </script>
复制代码

作者: 我来了    时间: 2015-5-9 18:43

会编JS天书的,真棒!
作者: Bella    时间: 2015-5-9 21:01

本帖最后由 Bella 于 2015-5-16 14:06 编辑

sed
关键字按a|b|c格式书写
  1. @echo off
  2. set "$=a|b|c"
  3. set "#=/%$:|=/!q;/%/!q"
  4. sed -rns ":a;N;$!ba;%#%;/(%$%).*\n\n.*(%$%)/!F" *.txt>con
  5. pause
复制代码

作者: CrLf    时间: 2015-5-9 23:03

回复 5# Bella


    可是如果只匹配到 a 和 b 呢?
作者: duofangpao    时间: 2015-5-10 13:17

谢谢,我先试试看
作者: duofangpao    时间: 2015-5-10 13:25

CrLf的我完全看不懂啊,晕
作者: chromatin2    时间: 2015-5-11 12:01

回复 8# duofangpao


    那是java的




欢迎光临 批处理之家 (http://bathome.net./) Powered by Discuz! 7.2