Board logo

标题: [文本处理] [已解决]批处理如何提取两特定字符串间的多行字符? [打印本页]

作者: AYOU    时间: 2010-4-4 18:05     标题: [已解决]批处理如何提取两特定字符串间的多行字符?

请都各位朋友,我想提取两个特定字符所有行的中间多行字符,

例如,文件如下:
asdfasdf
asdf
asdfasdfasdf
AAAAAA dfasfsdfs  #有用信息,开始
AAAAAA dfasfsdfs
AAAAAA dfasfsdfs
asdfsadfsd
asdfasdf
BBBBB asdfasfsdsf
BBBBB asdfasfsdsf #有用信息,结束
asdfasdf
asdf
asdf

请问:如何提取上面红色字体间的内容?

补充说明:希望通过纯bat实现,不考虑借助sed/grep等实现.

问题已解决,详见7楼yangfengoo的代码,再次感谢!

[ 本帖最后由 AYOU 于 2010-4-4 22:14 编辑 ]
作者: hanyeguxing    时间: 2010-4-4 18:16

就不能把问题说具体点吗?
作者: namejm    时间: 2010-4-4 18:31

楼主你到底要提取哪个部分的内容?
光给颜色看,不做任何文字说明
试问谁能看得懂?
为了不让帮你的人做无用功
请在顶楼精确描述你的问题
否则,没人会做活雷锋。
作者: bat007    时间: 2010-4-4 19:12

根本看不出任何的规律
作者: AYOU    时间: 2010-4-4 20:01

原帖由 namejm 于 2010-4-4 18:31 发表
楼主你到底要提取哪个部分的内容?
光给颜色看,不做任何文字说明
试问谁能看得懂?
为了不让帮你的人做无用功
请在顶楼精确描述你的问题
否则,没人会做活雷锋。


之前编辑时太粗心了,有部分说明文件弄丢了,已经修改过来了
作者: FOR    时间: 2010-4-4 20:13

红色BBBBB和它上一行黑色BBBBB如何确定谁才是结束字符,只怕没人知道。楼主太吝啬文字了。
作者: yangfengoo    时间: 2010-4-4 20:18

  1. @echo off
  2. for /f "delims=:" %%a in ('findstr /n "AAAAA BBBBB" a.txt') do if not defined x1 (set x1=%%a) else (set x2=%%a)
  3. for /f "tokens=1* delims=:" %%a in ('findstr /n .* a.txt') do if %%a geq %x1% if %%a leq %x2% echo.%%b
  4. pause
复制代码

作者: AYOU    时间: 2010-4-4 21:13

原帖由 FOR 于 2010-4-4 20:13 发表
红色BBBBB和它上一行黑色BBBBB如何确定谁才是结束字符,只怕没人知道。楼主太吝啬文字了。


你好!由于文件中有很多行都含有BBBB字样,因此只能自己判断取最开始出现的AAAA和最后出现的BBBB了.
作者: AYOU    时间: 2010-4-4 21:19

原帖由 yangfengoo 于 2010-4-4 20:18 发表
@echo off
for /f "delims=:" %%a in ('findstr /n "AAAAA BBBBB" a.txt') do if not defined x1 (set x1=%%a) else (set x2=%%a)
for /f "tokens=1* delims=:" %%a in ('findstr /n .* a.txt') do if %%a geq %x1 ...


谢谢yangfengoo,代码测试通过.
另外有个地方不是太明白,就是最后那个echo.%%b",echo后面那个"."作什么用,还有那个%%b变量又是取自哪里,貌似换成其它如%%c之类的就不行了.

[ 本帖最后由 AYOU 于 2010-4-4 21:20 编辑 ]
作者: bat007    时间: 2010-4-4 21:29     标题: 回复 9楼 的帖子

把这个帖子仔细读一遍:
http://bbs.bathome.net/thread-939-1-1.html
作者: AYOU    时间: 2010-4-4 22:11

问题解决了.谢谢楼上各位!




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