从超大文件中删除一行的快速方法

Ter*_*den 5 command-line sed csv files

我有一个 67GB 的 .csv 文件(我知道...我知道...)

我需要从文件中删除第 4,125,878 行,因为它已损坏。我的 CSV 解析工具不会忽略或跳过它。

可以sed做类似的东西

sed '4125878d' in.csv > out.csv

但就时间和磁盘空间而言,这将是一项非常昂贵的操作。

如果我使用sed -i '4125878d' in.csv,则操作需要很长时间。

有没有办法可以快速从一个大文件的中间删除一行?

V13*_*V13 2

我相信不会。

即使 sed 或您使用的任何程序足够聪明,可以就地进行更改而不是使用临时文件,它仍然必须在您要删除的行开始之后重写所有数据。

删除一行意味着您将文件的所有内容从该点左移到上一行的末尾。无论如何,您仍然需要从那时起重写该文件。