我有一个n行的文件。 (n大于1亿)批处理文件保留十行之一
我想输出一个只有10行中有1行的文件,我不能将文件分成十部分,只保留一部分,因为它必须更随机一点。后来我必须做一个统计分析,我不能在数据中产生强烈的偏见)。
我想读取文件和每个记录,如果记录号码mod 10然后输出它。
约束条件是:
它是一个窗口(可能硬化)的计算机可能XP Vista或Windows Server 2003
没有开发工具可用
没有网络,USB,光盘。不要读取外部通信。
因此我在想windows批处理文件(我不能假设powershell,并且vbscript很可能已被删除)。目前正在查看FOR/F命令。 但我不是专家,我不知道如何做到这一点。
谢谢Paul的回答。 我重新格式化(与胡沙姆帮助)的答案,把它放在一个批处理文件:
@echo off
setlocal
findstr/N . inputFile| findstr ^[0-9]*0: >temporaryFile
FOR /F "tokens=1,* delims=: " %%i in (temporaryfile) do echo %%j > outputFile
感谢QUUX和大同为同类替代解决方案。然而,在对较大文件进行快速测试之后,Paul的答案大约快了8倍。我猜测(在SET中)的评估是缓慢的,即使逻辑看起来很棒。
那些是什么样的限制?在这些限制下,你不能从事专业工作。听起来对我来说很可疑。 – 2008-11-29 13:07:45
这将教我重新键入它,而不是剪切和粘贴什么工作:) – 2008-11-29 13:34:40