我有一个巨大的文件(8GB),我想在前30行替换String LATIN1和UTF-8最有效的方法是什么?意味着有一种方法可以使用sed,但在解析前30行之后退出。
VIM无法在3小时内保存文件。
答案 0 :(得分:3)
问题在于,如果发生替换,所有程序都会对文件的副本进行替换,以便最终替换原始文件 - 他们不想要因显而易见的原因而冒险失去原件。
使用perl,你可以在单行中执行此操作,但这不会使它更短(嗯,它可能与vim相比,因为vim在另一个文件中保留历史记录,而perl没有) :
perl -pi -e 's,\bLATIN1\b,UTF-8,g if $. <= 30' thefile
答案 1 :(得分:2)
使用sed
,您可以退出q
:
sed -e 's/LATIN1/UTF-8/g' -e 30q
答案 2 :(得分:0)
未经测试,但我认为ed
将在不编写临时文件的情况下就地编辑文件。
ed yourBigFile << END
1,30s/LATIN1/UTF-8/g
w
q
END