我有一个巨大的文本文件(100GB),需要在linux上编辑一行。 显然,使用常规文本编辑器无法做到这一点。 有没有办法做到这一点?基本上跳转到第n行,然后编辑它然后保存回来。
答案 0 :(得分:1)
如果您知道要编辑的位置的确切字节偏移量,并且该版本不会更改该行的长度,那么您可以fseek()
到该行,读取该行,更改它然后写入进行。
答案 1 :(得分:1)
您可以使用'sed'流编辑器编辑任意大小的文件,因为它不需要立即加载整个文件。例如:
sed '54 s/[0-9][0-9]*/gone/' < file_in.txt > file_out.txt
将第54行中的数字替换为“已消失”一词。
它还支持使用'-i'选项编辑文件,但我从来没有尝试过一百GB的文件。没理由不行。
答案 2 :(得分:0)
假设有一行6000行'example.txt'并且您想将第3001行更改为'hello world'。
head -n 3000 example.txt > tmp.txt
echo 'hello world' >> tmp.txt
tail -n 2999 example.txt >> tmp.txt
mv tmp.txt example.txt