我在linux機器上有一個巨大的純文本文件(〜500Gb)。我想要在標題行(文件的第一行)中替換一些字符串,但是我所知道的所有方法似乎都很慢且效率較低。在linux命令行中用最大的文件替換字符串的最快方法?
例如文件:
foo apple cat
1 2 2
2 3 4
3 4 6
...
預期文件輸出:
bar apple cat
1 2 2
2 3 4
3 4 6
...
sed的:
sed -i '1s/foo/bar/g' file
-i
罐體C將文件上傳到適當位置,但該命令在磁盤上生成一個tmp文件並使用tmp文件替換原始文件。 io浪費時間。
VIM:
ex -c '1s/foo/bar/g' -c 'wq' file
Vim不會產生tmp文件,但這個工具加載到內存中的整個文件,要麼浪費了很多時間。
是否有更好的解決方案,只讀取第一行內存並將其寫回原始文件?我知道linux head
命令可以非常快地提取第一列。
請爲樣本輸入添加樣本輸入和您想要的輸出到您的問題。 – Cyrus
這隻能在'foo'和'bar'長度相同(以字節爲單位)時才能完成。否則,重寫整個文件是你唯一的選擇(儘管如果工具足夠聰明,它可以在原地完成)。 – Thomas
@cyrus我添加了這個例子。 –