Board logo

标题: [文本处理] [已解决]如何提取一个txt文本内重复出现次数等于指定数目的行内容 [打印本页]

作者: ysrr2011    时间: 2014-7-23 19:49     标题: [已解决]如何提取一个txt文本内重复出现次数等于指定数目的行内容

比如1个txt文本1lh.txt,内容为
111
113
131
118
311
313
331
333
116
118
.
.
.
897
958
994

欲批量提取该文本中出现次数为8-11的数据,并写入新文件1lh8-11.txt
作者: CrLf    时间: 2014-7-23 20:19

本帖最后由 CrLf 于 2014-7-24 00:12 编辑
  1. @echo off
  2. cd /d c:\文件夹1
  3. for /f "delims=" %%a in ('dir /b /a-d *.txt') do call :处理 "%%a">"文件夹2\%%~na0-3%%~xa"
  4. pause&exit
  5. :处理
  6. setlocal
  7. for /f "delims=" %%a in (%~snx1) do set /a #%%a#+=1
  8. for /f "delims=#" %%a in ('set #^|findstr "=[0-3]$"') do echo %%a
复制代码

作者: weichenxiehou    时间: 2014-7-23 21:43

回复 2# CrLf
是不是该set #|findstr "=[0-3]$"呢?
作者: ysrr2011    时间: 2014-7-23 21:56

谢谢,不过运算出的结果不对,比如原文件里011有11个,运算出来的结果仍有011,附上原文件的统计结果,请帮忙再改改好吗?
作者: ysrr2011    时间: 2014-7-23 22:05

谢谢3楼,解决问题了,确实要加$,也谢谢2楼。
作者: ysrr2011    时间: 2014-7-23 22:49

如果对一个文件夹1里的所有文件1lh.txt,1lc.txt....都进行同样处理,结果写入文件夹2的1lh0-3.txt,1lc.0-3.txt...应该如何编程?
作者: CrLf    时间: 2014-7-23 23:11

回复 6# ysrr2011


    已修改
作者: ysrr2011    时间: 2014-7-23 23:49

试了下,只有第一个文件结果是正确的。
作者: CrLf    时间: 2014-7-24 00:12

回复 8# ysrr2011


    已修改
作者: ysrr2011    时间: 2014-7-24 10:13

回复 9# CrLf


    感谢CrLf,提取出现次数9以下的数据完美运行,但如果要提取出现次数>9,比如8-11次的数据就不对了。
作者: apang    时间: 2014-7-24 13:51

回复 10# ysrr2011


    findstr "=[89]$ =1[01]$"
作者: CrLf    时间: 2014-7-24 16:27

powershell 也可以这样:
  1. foreach($file in (get-childitem *.txt)){
  2. get-content $file|group-object|where-object{$_.count -ge 8 -or $_.count -le 11}|select-object name >($file.name + '8_11' + $file.extension)
  3. }
复制代码





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