我有一个非常大的文本文件(600mb),我想从该文件中删除特定的行。
我知道要删除的行号。有没有一种非常简单的方法来实现这一点?
这可以在 C# 中轻松完成。但我不知道这是否是你想要的。
没有简单的方法可以做到这一点。您必须阅读整个文件,进行所需的修改,然后重新写入文件。您不能以任何其他方式从文件中间删除。
作为一个小的优化,您只需要在第一次修改之后重新编写文件的一部分。但是你必须在那之后重新编写整个。如果您删除的行接近文件末尾,那么这可能是一个重要的优化。
因此,如果您想进行此类修改,大文本文件并不是最好的存储格式。数据库会带来更好的性能。
感谢您的回复 - 我在 Windows 的 Vim 编辑器中找到了一种简单的方法。
仅作为信息,有问题的文件是提供的 .sql 文件,用于重新创建 mysql 数据库,因此别无选择,只能真正操作它。
再次感谢各位。
在 PowerShell 中:
$linesToRemove = 15,534,814,4632
$encoding = 'ASCII' # or 'UTF8', depending on what you need
Get-Content foo.sql |
ForEach-Object { $i=0 } { $i++ } |
Where-Object { $linesToRemove -notcontains $i }