-1

我有一个非常大的文本文件(600mb),我想从该文件中删除特定的行。

我知道要删除的行号。有没有一种非常简单的方法来实现这一点?

4

4 回答 4

0

这可以在 C# 中轻松完成。但我不知道这是否是你想要的。

于 2012-03-22T10:08:45.430 回答
0

没有简单的方法可以做到这一点。您必须阅读整个文件,进行所需的修改,然后重新写入文件。您不能以任何其他方式从文件中间删除。

作为一个小的优化,您只需要在第一次修改之后重新编写文件的一部分。但是你必须在那之后重新编写整个。如果您删除的行接近文件末尾,那么这可能是一个重要的优化。

因此,如果您想进行此类修改,大文本文件并不是最好的存储格式。数据库会带来更好的性能。

于 2012-03-22T10:00:39.100 回答
0

感谢您的回复 - 我在 Windows 的 Vim 编辑器中找到了一种简单的方法。

仅作为信息,有问题的文件是提供的 .sql 文件,用于重新创建 mysql 数据库,因此别无选择,只能真正操作它。

再次感谢各位。

于 2012-03-22T10:10:30.953 回答
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 }
于 2012-03-22T10:23:14.480 回答