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

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

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

欲批量提取该文本中出现次数为8-11的数据,并写入新文件1lh8-11.txt
1

评分人数

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

本帖最后由 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
复制代码
1

评分人数

TOP

回复 2# CrLf
是不是该set #|findstr "=[0-3]$"呢?
1

评分人数

    • CrLf: 感谢指正!技术 + 1
看得多说得多,远比不上写得多。

TOP

谢谢,不过运算出的结果不对,比如原文件里011有11个,运算出来的结果仍有011,附上原文件的统计结果,请帮忙再改改好吗?

TOP

谢谢3楼,解决问题了,确实要加$,也谢谢2楼。

TOP

如果对一个文件夹1里的所有文件1lh.txt,1lc.txt....都进行同样处理,结果写入文件夹2的1lh0-3.txt,1lc.0-3.txt...应该如何编程?

TOP

回复 6# ysrr2011


    已修改

TOP

试了下,只有第一个文件结果是正确的。

TOP

回复 8# ysrr2011


    已修改

TOP

回复 9# CrLf


    感谢CrLf,提取出现次数9以下的数据完美运行,但如果要提取出现次数>9,比如8-11次的数据就不对了。

TOP

回复 10# ysrr2011


    findstr "=[89]$ =1[01]$"
1

评分人数

TOP

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. }
复制代码

TOP

返回列表