有一个大约44G的文件。我想在第一行之前添加一些内容。我试过用sed。像这样
sed -i '1iSome content' /home/always/test.dat
Run Code Online (Sandbox Code Playgroud)
然而,它花费大约100分钟。有没有更快的方法?任何方式都可以。例如Java、C、Linux工具...
实际场景我想导入一个csv到neo4j数据库。我的步骤是:
没有办法在不涉及重写整个文件的文件开头插入任意数量的文本。无论您使用何种语言或工具,这都适用。
您可能会通过使用除此之外的其他方法sed 来加快速度1,但瓶颈将是磁盘/文件系统 IO。
为了获得更好的性能:
read(2)和大缓冲区进行复制write(2),或sendFile(2)系统调用,以便不需要通过用户空间缓冲区复制数据,或fallocate(2)那么您可以使用它来插入数据而无需复制2。C 可能是编写此代码的最佳语言。
或者,如果您想坚持使用现有的命令行实用程序,使用cat或dd使用适当的标志可能比sed.
1 -sed很可能将输入分成几行,然后在用户空间缓冲区中重新组装这些行。这是不必要的。
2 - 填充可能包含额外的空格或“注释”行……假设正在读取文件的应用程序可以处理这些。如果可以,请参阅/sf/answers/4170032541/以获取示例代码以帮助您入门。