我试图找出一种修改文本文件(特别是删除特定行)的方法,而无需将文件的大部分读取到内存中或重写整个文件。这里讨论的是大于主内存约 15-50 Gigs 的文件。
附:我正在使用Linux。
你不会逃避创建一个新文件,所以就硬着头皮去做吧。使用grep
使用适当的选项并将结果通过管道传输到第二个文件:
$ grep -fv patternsToExcludeFromInput input > output
另一种方法是将模式放入哈希表 (Perl)、字典 (Python) 或unordered_map
(C++),并处理输入文件的每一行以查找匹配项。
如果没有匹配,则将该行打印到标准输出流(您可以通过管道传输到常规文件)。您的内存使用将主要限于哈希表和您正在查询的输入行。
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)