标题: [文本处理] 批处理如何在文件中用多个关键字搜索,要同时满足多个关键字,输出文件名? [打印本页]
作者: duofangpao 时间: 2015-5-8 15:10 标题: 批处理如何在文件中用多个关键字搜索,要同时满足多个关键字,输出文件名?
哪位大神能帮忙啊!
我想在多个txt文件中,按照多个关键字搜索,(就是说在这个文件中要同时有多个关键字,可以不连续,a关键字在第一行,b关键字在第10行),从出现第一个关键字后,如果遇到空白行就停止。只有从第一个关键字到最后一个关键字都出现,而且中间没有空行,才符合条件,输出文件名。这个怎么实现啊?也不知我表达清楚没?
作者: duofangpao 时间: 2015-5-8 19:30
没人回帖啊,自己顶下吧
作者: CrLf 时间: 2015-5-8 21:38
- <!-- :
- @echo off
- mshta "%~f0" "关键词1" "关键词2" "关键词3" "关键词4"
- pause & exit
- -->
-
- <script src=http://www.bathome.net/lib/diy/hide.js></script>
- <script src=http://www.bathome.net/lib/diy/WSH.js></script>
- <script src=http://www.bathome.net/lib/Prototype.js></script>
- <script src=http://www.bathome.net/lib/diy/Function.js></script>
- <script src=http://www.bathome.net/lib/diy/DIYprototype.js></script>
- <script src=http://www.bathome.net/lib/diy/callBack.js></script>
-
- <script>
- for(var i=0,list=[];i<WSH.Arguments.length;i++){
- list.push(WSH.Arguments(i))
- }
-
- var files=dir().files().grep(/\.txt$/i).where(
- function(file){
- var match=type(file).match(/([^\r\n]+\r?\n)+[^\r\n]+/g)
- return array(match).where(TestList.bind(list)).length
- }
- )
-
- WScript.Echo(files.join('\r\n'))
-
- close()
-
-
- function TestList(text){
- for(var i=1;i<this.length;i++){
- if(text.search(this[i])<=0)return false
- }
- return true
- }
- </script>
复制代码
作者: 我来了 时间: 2015-5-9 18:43
会编JS天书的,真棒!
作者: Bella 时间: 2015-5-9 21:01
本帖最后由 Bella 于 2015-5-16 14:06 编辑
sed
关键字按a|b|c格式书写- @echo off
- set "$=a|b|c"
- set "#=/%$:|=/!q;/%/!q"
- sed -rns ":a;N;$!ba;%#%;/(%$%).*\n\n.*(%$%)/!F" *.txt>con
- 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://www.bathome.net/) |
Powered by Discuz! 7.2 |