[新手上路]批处理新手入门导读[视频教程]批处理基础视频教程[视频教程]VBS基础视频教程[批处理精品]批处理版照片整理器
[批处理精品]纯批处理备份&还原驱动[批处理精品]CMD命令50条不能说的秘密[在线下载]第三方命令行工具[在线帮助]VBScript / JScript 在线参考
返回列表 发帖

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

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

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

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
复制代码

TOP

谢谢版主回复,弱弱的问一下,vbs 的代码怎么使用?

TOP

可以的话,帮测一下运行时间
  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 编辑 ]

TOP

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

TOP

回复 5楼 的帖子

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

评分人数

我帮忙写的代码不需要付钱。如果一定要给,请在微信群或QQ群发给大家吧。
【微信公众号、微信群、QQ群】http://bbs.bathome.net/thread-3473-1-1.html
【支持批处理之家,加入VIP会员!】http://bbs.bathome.net/thread-67716-1-1.html

TOP

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

TOP

原帖由 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 编辑 ]

TOP

返回列表