寻找在 linux 中编辑大文件的快速方法

looking for fast way to edit a large file in linux

我有一个大文件,有几千兆的二进制数据,顶部有一个 ASCII header。我需要对 ASCII header 做一些小改动。 sed 可以完成这项工作,但由于文件太大,因此需要花费一些时间。 vi/vim 也很慢。是否有任何 linux 实用程序可以直接进入文件,在顶部进行更改,然后快速退出?

一个例子可能是 header 看起来像:

Code Rev:   3.5
Platform:   platform1
Run Date:   12/13/16
Data source:  whatever
Restart:    False
followed by a large amount of binary data ....

然后我可能需要编辑 "Data source" 中的错误。

前提是你知道你的header小于X字节,你可以使用dd。 (!) 但它仅在两个字符串具有相同长度时才有效 (!)

假设 header 小于 4096 字节

dd if=/path/to/file bs=4096 count=1 | sed 's/XXX/YYY/' | dd of=/path/to/file conv=notrunc

您也可以使用 C、Python、PHP、JAVA 等语言以编程方式完成。我的想法是打开文件,读取 header, 修复它,然后写回来。