Board logo

标题: [文本处理] [已解决]批处理怎样提取文本特征字符串并创建新文本? [打印本页]

作者: lxh623    时间: 2011-9-30 22:57     标题: [已解决]批处理怎样提取文本特征字符串并创建新文本?

有个文本,格式如下。我想提取每一段(从“标题”到邻近的下一个“标题”前面)到一个新的文本。比如,有x段,就创建x个文本。
谢谢您!

标题:A卧槽马
分类:
来源:
赛事类型:
赛事:
轮次:
组别:
台次:
日期:
地点:
时间规则:
红方:
红等级分:
红队:
黑方:
黑等级分:
黑队:
解说:陈松顺
录入:leescott
创建日期:
修改日期:
ECCO:
棋谱类型:实战全局/开局
对局种类:
结果:未知
结束方式:
FEN :2baka3/9/4b2RN/9/9/9/9/7C1/2p1p4/3K1C2r w - - 0 1
      A卧槽马
      车二平五
      !
      象3进5
      马一进三
      将5进1
      炮二进六
      杀!




标题:A钓鱼马
分类:
来源:
赛事类型:
赛事:
轮次:
组别:
台次:
日期:
地点:
时间规则:
红方:
红等级分:
红队:
黑方:
黑等级分:
黑队:
解说:陈松顺
录入:leescott
创建日期:
修改日期:
ECCO:
棋谱类型:实战全局/开局
对局种类:
结果:未知
结束方式:
FEN :3aka3/5R3/4b4/9/6bN1/7R1/9/4KA3/1r1p5/2n6 w - - 0 1

      A钓鱼马
      车四进一
      将5平6
      马二进三
      将6平5
      车二进五
      杀!
作者: ArdentMan    时间: 2011-9-30 23:35

本帖最后由 ArdentMan 于 2011-9-30 23:43 编辑
  1. @Echo Off&SetLocal EnableDelayedExpansion
  2. For /F "delims=" %%a In (a.txt) Do (
  3.   Set "Str=%%a"
  4.   If "!Str:~,3!" EQU "标题:" Set /A Num+=1
  5.   Echo %%a>>Txt_!Num!.txt
  6. )
  7.   
复制代码

作者: FOR    时间: 2011-9-30 23:46

关注此题,能用 gawk 解决么?
作者: Hello123World    时间: 2011-10-1 13:05

  1. @echo off&SetLocal EnableDelayedExpansion
  2. Set n=0
  3. For /f "delims=" %%i in (b.txt) do (
  4. Set a=%%i
  5. If "!a:~,2!"=="标题" Set /a n+=1
  6. >>象棋!n!.txt echo %%i)
  7. pause
复制代码

作者: Seder    时间: 2011-10-1 16:25

回复 3# FOR


    gawk "/标题/{i++;}{print>>i\".txt\"}" test
作者: FOR    时间: 2011-10-1 16:52

回复 5# Seder

我测试只生成了一个无前缀名的txt文件,内容和a.txt内容一样。
作者: awk    时间: 2011-10-1 19:01

回复 6# FOR


我这边测试没有问题
版本:3.1.6
作者: Seder    时间: 2011-10-1 19:04

回复 6# FOR


    有这样的事?我在ubuntu下运行没问题,后来找了台windows测试也没问题。我用的是这个http://gnuwin32.sourceforge.net/packages/gawk.htm 安装版的gawk
作者: FOR    时间: 2011-10-1 19:06

回复 7# awk

我的版本是 3.1.5 的,难道这个版本读取中文有问题?
请问你的 3.1.6 的是在哪里下载的,能给个链接吗?论坛第三方的是 3.1.5 的。
作者: awk    时间: 2011-10-1 19:10

回复 9# FOR


8楼已经给出了
作者: FOR    时间: 2011-10-1 19:13

重新下了个,论坛的写的是3.1.5但实际上是3.1.6的,
但还是不行,和原来的一样。。
作者: FOR    时间: 2011-10-1 19:23

怎么会这样呢,下载了那个 安装版的,可以安装,但无法使用,重启系统也没用
'gawk' 不是内部或外部命令,也不是可运行的程序
作者: broly    时间: 2011-10-1 19:49

回复 12# FOR


    安装版并不是把工具放到%PATH%位置,而是单独一个目录,你找找那个目录下的bin文件夹,把批处理放那里运行
作者: FOR    时间: 2011-10-1 19:57

本帖最后由 FOR 于 2011-10-1 20:01 编辑

现在已完全无法运行了,提示这个
gawk: (FILENAME=a.txt FNR=1) fatal: print to "standard output" failed (No space
left on device)
谁知道是什么原因引起的么?怎么解决?
连 gawk "{print $0}" b.txt  都无法运行了。。555.。。。
作者: FOR    时间: 2011-10-1 22:45

继续求救
ghost 恢复系统也不行,重新下载 gawk 也不行,换安装版的也不行。。。
现在运行 gawk 除了能查看版本和帮助,其他的都不行了。
作者: Seder    时间: 2011-10-2 03:35

回复 15# FOR


     把系统的临时目录都清理了试试。一般是:
TEMP=C:\DOCUME~1\ADMINI~1\LOCALS~1\Temp
TMP=C:\DOCUME~1\ADMINI~1\LOCALS~1\Temp
作者: FOR    时间: 2011-10-2 05:23

回复 16# Seder

也是通宵啊,哈哈。。。
删了,还是不行。。
作者: FOR    时间: 2011-10-2 11:52

  1. gawk "{print}" a.txt>con
复制代码
这样就可以,必须重定向




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