Board logo

标题: [文本处理] [已解决]批处理从一行字符串中根据特殊标识提出多个指定字符串? [打印本页]

作者: xlkindy    时间: 2010-3-24 16:24     标题: [已解决]批处理从一行字符串中根据特殊标识提出多个指定字符串?

如一文本文件内容如下:
<提取行>AAAAAAA(字符串1)BBBBBBBB(字符串2)CCCCCC(字符串3)
rrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrr
<提取行>AAAAAAA(字符串4)BBBBBBBB(字符串5)CCCCCC
uuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuu
........

提取后效果:
字符串1,字符串2,字符串3
字符串4,字符串5
........

即:对文本文件中带<提取行>的行中将()中的字符串提出来,有多少提多少,每个字符串用“,”间隔,最后一个不需要用“,”,其余不带<提取行>的内容就清除掉。

[ 本帖最后由 xlkindy 于 2010-3-26 09:59 编辑 ]
作者: bat007    时间: 2010-3-24 17:55

  1. gawk "/<提取行>/{n=split($0,a,\")\");for(i=1;i<n-1;i++)printf \"%s(\",a[i];print a[i]}" a.txt | gawk -F( "{for(i=2;i<NF;i+=2)printf \"%s;\",$i;print $i}" >b.txt
复制代码

作者: xlkindy    时间: 2010-3-24 18:11

抱歉,能提供gawk的下载链接吗?
作者: xlkindy    时间: 2010-3-24 18:15

自己找到了,谢谢。
另外,有无其它方法,gawk不太熟悉,可否用for+sed实现呢?
作者: xlkindy    时间: 2010-3-24 18:18     标题: 回复 2楼 的帖子

这个方法试了一下,貌似进入死循环了。
作者: bat007    时间: 2010-3-24 21:14     标题: 回复 5楼 的帖子

C:\Test>type a.txt
<提取行>AAAAAAA(字符串1)BBBBBBBB(字符串2)CCCCCC(字符串3)
rrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrr
<提取行>AAAAAAA(字符串4)BBBBBBBB(字符串5)CCCCCC
uuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuu
  1. gawk "/<提取行>/{n=split($0,a,\")\");for(i=1;i<n-1;i++)printf \"%s(\",a[i];print a[i]}" a.txt | gawk -F( "{for(i=2;i<NF;i+=2)printf \"%s;\",$i;print $i}" >b.txt
复制代码
C:\Test>type b.txt
字符串1;字符串2;字符串3
字符串4;字符串5
作者: sgaizxt001    时间: 2010-3-25 09:27

gwak是包含的有C语言?
作者: bat007    时间: 2010-3-25 13:04     标题: 回复 7楼 的帖子

gawk是用C语言编写的,不是包含和被包含的关系,有些语法比较像而已。
作者: lvsehuaxue    时间: 2011-5-16 20:45

批处理这样不知行否?
  1. @echo off&setlocal enabledelayedexpansion
  2. for /f "delims=" %%i in ('findstr "提取行" a.txt') do (
  3.     set "v=%%i"
  4.     set "v=!v:(= !"
  5.     set "v=!v:)= !"
  6.     set "v=!v:<=!"
  7.     set "v=!v:>=!"
  8.     for %%i in (!v!) do (
  9.         set /a n=n%%2+1
  10.         if !n! == 2 set str=!str!%%i,
  11.      )
  12.      echo !str:~,-1!
  13.      set str=
  14. )
  15. pause
复制代码





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