在一个非常大的文件开始处添加两行的有效方法

我有一个非常大的(每个GB几个)文本文件组。 我需要在每个文件的开头添加两行。

我试着用下面的命令使用sed

sed -i '1iFirstLine' sed -i '2iSecondLine' 

sed的问题是它遍历整个文件,即使在开始时只需要添加两行,因此需要很多时间。

有没有另一种方式更有效地做到这一点,而不读整个文件?

你应该试试

 echo "1iFirstLine" > newfile.txt echo "2iSecondLine" >> newfile.txt cat oldfile.txt >> newfile.txt mv newfile.txt oldfile.txt 

这一个是完美的工作,它也非常快。

 perl -pi -e '$.=0 if eof;print "first line\nsecond line\n" if ($.==1)' *.txt 

如果没有文件重写,添加在开始处是不可能的(与追加到最后相反)。 你不能“转移”文件内容,因为没有文件系统支持。 所以你应该这样做:

 echo -e "line 1\nLine2" > tmp.txt cat tmp2.txt oldbigfile.txt > newbigfile.txt rm oldbigfile.txt mv newbigfile.txt oldbigfile.txt 

请注意,您需要足够的磁盘空间来保存两个文件一段时间。