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

[文本处理] 批处理怎样实现每10个句子后面加一个标志?

[复制链接]
发表于 2011-5-23 20:42:08 | 显示全部楼层
既然用vbs,怎能不用正则表达式?

  1. Set regEx = new RegExp
  2. regEx.Global = true
  3. regEx.IgnoreCase = false
  4. Set fso = CreateObject("Scripting.FileSystemObject")
  5. txt = fso.OpenTextFile("a1.txt").ReadAll()
  6. regEx.Pattern = "(?:[^.?!]+[.?!]){10}"
  7. txt = regEx.Replace(txt, "$&<br/>")
  8. regEx.Pattern = "(?:[^.?!]+[.?!]){50}"
  9. txt = regEx.Replace(txt, "$&""http://www.baidu.com""")
  10. fso.OpenTextFile("a2.txt", 2, true).Write txt
复制代码

评分

参与人数 1技术 +1 收起 理由
zm900612 + 1 正则用得好

查看全部评分

发表于 2011-5-23 21:12:59 | 显示全部楼层
今天开始看awk,这个用gawk怎么弄?
发表于 2011-5-23 21:23:28 | 显示全部楼层
本帖最后由 plp626 于 2011-5-24 20:36 编辑
  1. gawk "BEGIN {FS="."};{for (i=1;i<=NF;i++){printf "%s",$i; if(i==10)printf ".^<br/^>";if (i==50)printf ".http://www.baidu.com "}}" a.txt
复制代码
 楼主| 发表于 2011-5-23 22:11:54 | 显示全部楼层
纯批貌似也可以...不过只以句号为分隔符@echo off&setlocal enabledelayedexpansion
for /f "delims=" %%a in (a.txt) do (
   set tmp=%%a
   set tmp=!tmp:?=.?!
   for /l %%b in (1 1 100) do (
      for  ...
zm900612 发表于 2011-5-23 18:44

输出到>>txt 咋办?
 楼主| 发表于 2011-5-23 22:21:18 | 显示全部楼层
大侠们 谁总结一下我的问题怎么弄?









我的思想:几十篇文章放在一个txt里边,然后打乱,然后随机加入br,用br来作为标识符作为分割点,然后来生成很多小的txt文件
发表于 2011-5-23 22:51:16 | 显示全部楼层
本来也想用正则的,可惜水平跟不上,只能写出批处理思路的vbs来解决了,呵呵。。。
发表于 2011-5-23 22:51:58 | 显示全部楼层
  1. @echo off&setlocal enabledelayedexpansion
  2. (for /f "delims=" %%a in (a.txt) do (
  3.    set tmp=%%a
  4.    set tmp=!tmp:?=.?!
  5.    for /l %%b in (1 1 100) do (
  6.       for /f "tokens=1-10* delims=." %%c in ("!tmp!") do (
  7.          set /a "n=(n+1)%%5"
  8.          if !n!==0 set www=www.baidu.com
  9.          set echo=%%c.%%d.%%e.%%f.%%g.%%h.%%i.%%j.%%k.%%l.!www!^</br^>
  10.          for /l %%z in (1 1 10) do set echo=!echo:..=.!
  11.          echo !echo:.?=.!
  12.          set www=
  13.          set tmp=%%m
  14.       )
  15.    )
  16. ))>b.txt
  17. pause
复制代码
发表于 2011-5-24 00:08:11 | 显示全部楼层
20# gung


你能否先总结下,这么多人提供了这么多代码,为何你的问题还是没解决?
 楼主| 发表于 2011-5-24 22:15:09 | 显示全部楼层
关键我不懂代码 呵呵

试过了22楼得 发现br出现的很密集 有时候9个 有时候5个就有br了
发表于 2011-5-24 22:23:53 | 显示全部楼层
24# gung


水平有限...
楼主把我搞晕了,假如原文每个自然段中包含的句数不定,那到底是合并所有自然段后重新分段?还是既保留原有自然段,同时还按十句一周期来分段?或者是以十句一周期分段,但这个周期不超过原有自然段的长度?
发表于 2011-5-25 00:33:33 | 显示全部楼层
24# gung


看不懂不要紧,你可以分别测试一下那些代码,然后给出详细的测试结果。
 楼主| 发表于 2011-5-26 22:23:49 | 显示全部楼层
24# gung


水平有限...
楼主把我搞晕了,假如原文每个自然段中包含的句数不定,那到底是合并所有自然段后重新分段?还是既保留原有自然段,同时还按十句一周期来分段?或者是以十句一周期分段,但这个周期不超 ...
zm900612 发表于 2011-5-24 22:23


一个txt不分段落,每10个句子后面一个br ;每50个句子后面一个wwwbaiducom  
发表于 2011-5-26 22:53:56 | 显示全部楼层
  1. @echo off&setlocal enabledelayedexpansion
  2. (for /f "delims=" %%a in (a.txt) do set /p=%%a
  3. echo;)<nul>tmp
  4. (for /f "delims=" %%a in (tmp) do (
  5.    set tmp=%%a
  6.    set tmp=!tmp:?=.?!
  7.    for /l %%b in (1 1 100) do (
  8.       for /f "tokens=1-10* delims=." %%c in ("!tmp!") do (
  9.          set /a "n=(n+1)%%5"
  10.          if !n!==0 set www=www.baidu.com
  11.          set echo=%%c.%%d.%%e.%%f.%%g.%%h.%%i.%%j.%%k.%%l.!www!^</br^>
  12.          for /l %%z in (1 1 10) do set echo=!echo:..=.!
  13.          echo !echo:.?=.!
  14.          set www=
  15.          set tmp=%%m
  16.       )
  17.    )
  18. ))>b.txt
  19. pause
复制代码
发表于 2011-5-26 23:06:55 | 显示全部楼层
只以说zm版主敬业又执着,很明显楼主是什么党来着。。。
您需要登录后才可以回帖 登录 | 注册

本版积分规则

Archiver|手机版|小黑屋|批处理之家 ( 渝ICP备10000708号 )

GMT+8, 2026-3-17 12:52 , Processed in 0.012390 second(s), 8 queries , File On.

Powered by Discuz! X3.5

© 2001-2026 Discuz! Team.

快速回复 返回顶部 返回列表