寻找在 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, 修复它,然后写回来。
我有一个大文件,有几千兆的二进制数据,顶部有一个 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, 修复它,然后写回来。