我有一个非常大的文本文件(600mb),我想删除该文件中的特定行。
我知道要删除的行号。有没有一种非常简单的方法来实现这一目标?
答案 0 :(得分:0)
没有简单的方法可以做到这一点。您必须阅读整个文件,进行所需的修改,然后重新编写该文件。您无法以任何其他方式从文件中间删除。
作为次要优化,您只需在第一次修改后重写文件的一部分。但是你必须在那之后重写整体。如果删除的行位于文件的末尾,那么这可能是一个重要的优化。
因此,如果要进行此类修改,大文本文件不是最佳存储格式。数据库可以带来更好的性能。
答案 1 :(得分:0)
这可以在C#中轻松完成。 但我不知道这是不是你想要的。
答案 2 :(得分:0)
感谢您的回复 - 我在Windows的Vim编辑器中找到了一种简单的方法。
只是通过信息,有问题的文件是一个提供的.sql文件,用于重新创建一个mysql数据库,所以没有选择,只能真正操作它。
再次感谢你们。
答案 3 :(得分:0)
在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 }