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

[文本处理] [已解决]批处理怎样筛选文本文件的内容?

文件内容在附件里面 我截取了其中一部分,我要把
"2011-3-29 0:0:0",4295267863,2,37,6,7747,5946,113006,1,116957973479,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0
"2011-3-29 0:0:0",4295267863,3,37,6,7747,5946,3152,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0
这种格式的第三部分相同的内容提出来重定向到另外一个以第三部分命名的文件比如上面两行的就是分别提取到2.txt和3.txt
1

评分人数

    • Batcher: 感谢给帖子标题标注[已解决]字样PB + 2

  1. @echo off
  2. for /l %%a in (0,1,100) do (
  3.      for /f "tokens=1,2,3,* delims=," %%b in (temp.txt) do (
  4.              if %%a==%%d (echo %%b,%%c,%%d,%%e>>%%a.txt )
  5.          )
  6. )
复制代码
做了一个这样的,但是效率非常之低,因为文件很大,有几百M
我用findstr “,.*,第三部分的数字,.*,*,”这个命令效率的快点,但是查出来的大部分都是对的,有些是错的,不知道是不是我写错了,求高人指点!!

TOP

本帖最后由 namejm 于 2011-4-12 12:19 编辑

几百M的大文件,批处理拿不下
不知道sed之类的能不能打开那么大的文件
另外,请你详细描述第3部分的字符串的组成规律
尺有所短寸有所长,学好批处理没商量;
考虑问题复杂化,解决问题简洁化。

心在天山,身老沧州。

TOP

"2011-3-29 0:0:0",4295267863,2,37,6,7747,5946,113006,1,116957973479,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0
"2011-3-29 0:0:0",4295267863,3,37,6,7747,5946,3152,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0

红色的是第三部分?

TOP

4# asnahu


对的,就是第三部分你指的红色部分,这个部分相同的内容提出来重定向

TOP

3# namejm


文件有四百多M,我用sort打开另存为ansi文件就只有两百多M了,源文件是unicode文件,sed应该可以打开吧,第三部分的规律是有 但是这规律也有点乱,分几段,从1到36然后是从50到70,80到83,最后还有一个106,就是这些数字,所以也没什么规律可言了,

TOP

第三部分是纯数字,这就是规律啊
能具体到什么程度就到什么程度,不要觉得那些字符串不确定就认为没规律
想不到批处理还是可以打开大文件的啊
那就好办了
试试下面这个代码吧,这个代码是以追加的方式写入文件的,所以必须保证在运行它之前把当前目录下以纯数字命名的txt文件内容清空:
  1. @echo off
  2. for /f "delims=, tokens=1-3*" %%i in (test.txt) do (
  3.     (echo %%i,%%j,%%k,%%l)>>%%k.txt
  4. )
  5. pause
复制代码
1

评分人数

尺有所短寸有所长,学好批处理没商量;
考虑问题复杂化,解决问题简洁化。

心在天山,身老沧州。

TOP

本帖最后由 zm900612 于 2011-4-12 13:37 编辑

看错题意,当我没说...

TOP

7# namejm


你的这个可以,比我的那个效率高多了,嘿嘿!!但是时间还是用了蛮久!还有没有更高效的!

TOP

  1. gawk -F, "{a[$0]=$3;b[$3]=$3}END{for(i in a)for(j in b)if(b[j]==a[i])print i >> b[j]\".txt\"}" item
复制代码
1

评分人数

TOP

10# asnahu


高,效率高多了!正在学这个命令,你这东西太长,看不大懂!

TOP

11# hucuibai


那是gawk数组的最基本用法了,可以找几个相关的教程看看。
我帮忙写的代码不需要付钱。如果一定要给,请在微信群或QQ群发给大家吧。
【微信公众号、微信群、QQ群】http://bbs.bathome.net/thread-3473-1-1.html
【支持批处理之家,加入VIP会员!】http://bbs.bathome.net/thread-67716-1-1.html

TOP

返回列表