Board logo

标题: [文本处理] [已解决]批处理求字符串出现精确次数而不是包含该字串的行数 [打印本页]

作者: haier168    时间: 2009-6-7 09:06     标题: [已解决]批处理求字符串出现精确次数而不是包含该字串的行数

我有一个字典的xml 文件,103万行,我想知道里面有多少<ABBR> 的标签,我用find, findstr 都只能得到含有<ABBR>的行数,但如果一行中有多个<ABBR> 时,就无法准确得知具体有多少含有这个字串了。
大家帮帮忙,周末愉快!

[ 本帖最后由 haier168 于 2009-6-9 10:09 编辑 ]
作者: rat    时间: 2009-6-7 11:37

vbs:
  1. MsgBox GetStrCount("<ABBR>", _
  2. CreateObject("Scripting.FileSystemObject").OpenTextFile("test.xml").ReadAll())
  3. Function GetStrCount(patrn, strng)
  4.    Dim regEx  ' 创建变量。
  5.    Set regEx = New RegExp   ' 创建正则表达式。
  6.    regEx.Pattern = patrn   ' 设置模式。
  7.    regEx.IgnoreCase = True   ' 设置是否区分大小写。
  8.    regEx.Global = True   ' 设置全程匹配。
  9.    GetStrCount = regEx.Execute(strng).Count
  10. End Function
复制代码

作者: haier168    时间: 2009-6-7 11:57

谢谢版主回复,弱弱的问一下,vbs 的代码怎么使用?
作者: inittab    时间: 2009-6-7 12:25

可以的话,帮测一下运行时间
  1. @echo off&setlocal enabledelayedexpansion
  2. set n=0
  3. echo 开始计时:%time%
  4. for /f "delims=" %%i in (word.xml) do (
  5. set "str=%%i"&set "str=!str:<ABBR>=" "ABBR" "!"
  6. for %%a in ("!str!") do if %%a=="ABBR" (set/a n+=1)
  7. )
  8. echo 共有^<ABBR^> !n! 个
  9. echo 结束时间:%time%
  10. pause
复制代码

[ 本帖最后由 inittab 于 2009-6-7 12:27 编辑 ]
作者: haier168    时间: 2009-6-7 12:45

谢谢各位的帮忙,今天是星期天,由于部门资料管理严格,在家里无法测试效果,只有等上班才能测试,今天在家里上网找资料,发现要学习的实在太多了,欢迎大家继续踊跃发表代码。
不过看楼上两位的代码都是批处理,是否没有第三方工具能用一条命令就出结果的?
作者: Batcher    时间: 2009-6-7 12:55     标题: 回复 5楼 的帖子

  1. grep -o "<ABBR>" a.txt | find /v "" /c
复制代码
第三方命令行工具 grep.exe 下载地址:
http://bbs.bathome.net/thread-1114-1-1.html
作者: haier168    时间: 2009-6-7 14:45

呵呵,谢谢管理员,我随便找了个文件测试,正是我想要的结果
太强了,命令行有些时候太强了
我要好好学习,向各位帮忙的兄弟致谢!!!
作者: haier168    时间: 2009-6-9 10:15

原帖由 inittab 于 2009-6-7 12:25 发表
可以的话,帮测一下运行时间
@echo off&setlocal enabledelayedexpansion
set n=0
echo 开始计时:%time%
for /f "delims=" %%i in (word.xml) do (
set "str=%%i"&set "str=!str:=" "ABBR" "!"
for %%a in ("! ...


今天上班后用inittab 兄的代码测试, 结果用时3分31秒, 但结果是错的事实上有 48157 个, 而测试的结果是48153个,刚刚用了Batcher 兄的代码, 发现用时不到2秒, 且结果完全正确。效率高而且准确,就是无法给各位评分,因为我在帖子右下角根本找不到任何可以评分的功能。麻烦管理员帮忙解决评分的问题。

[ 本帖最后由 haier168 于 2009-6-9 10:36 编辑 ]




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