当前位置:  开发笔记 > 后端 > 正文

批处理文件保留十行之一

如何解决《批处理文件保留十行之一》经验,为你挑选了1个好方法。

我有一个有n行的文件.(n超过1亿)

我想输出一个只有10行中的1行的文件,我不能将文件分成十部分而只保留一部分,因为它必须更随机一点.后来我必须做一个统计分析,我不能在数据中产生强烈的偏见.

我正在考虑读取文件和每个记录,如果记录号mod 10然后输出它.

限制是:

它是一台Windows(可能是硬化的)计算机,可能是XP Vista或Windows Server 2003.

没有可用的开发工具

没有网络,USB,CD-ROM.不读外部通讯.

因此,我在考虑Windows批处理文件(我不能假设powershell,并且可能已删除了vbscript).目前正在查看FOR/F命令.我仍然不是专家,我不知道如何实现这一目标.

谢谢保罗的回答.我重新格式化(使用Hosam帮助)将其放入批处理文件中的答案:

@echo off
setlocal   
findstr/N . inputFile| findstr ^[0-9]*0: >temporaryFile
FOR /F "tokens=1,* delims=: " %%i in (temporaryfile) do echo %%j > outputFile

感谢quux和Pax提供类似的替代解决方案.然而,在对较大文件进行快速测试后,Paul的答案大约快了8倍.我想评估(在SET中)有点慢,即使逻辑看起来很棒.



1> The Archetyp..:

好的,我想我已经破解了它:

findstr/N . path-to-log-file | findstr ^[0-9]*0:

(使用findstr将行号添加到行的开头,然后再次仅打印行号以零结尾的行)

因此,您将获得10行中的一行,但每行前面加上亚麻和冒号

如果我能想到一种使用命令行工具的方法,只能解决这个问题,我将编辑这个答案:)

删除行号和冒号

FOR /F "tokens=1,2* delims=: " %i in (file-with-linenumbers) do echo %j

保罗.

推荐阅读
刘美娥94662
这个屌丝很懒,什么也没留下!
DevBox开发工具箱 | 专业的在线开发工具网站    京公网安备 11010802040832号  |  京ICP备19059560号-6
Copyright © 1998 - 2020 DevBox.CN. All Rights Reserved devBox.cn 开发工具箱 版权所有