有效的方法,在一个非常大的文件的开头添加两行(Efficient way to add two li

2019-09-22 07:09发布

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

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

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

与SED的问题是,它遍历整个文件,即使不得不在一开始只添加两行,因此需要花费大量的时间。

是否有另一种方法更有效地做到这一点,而不读取整个文件?

Answer 1:

你应该试试

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


Answer 2:

这是一个完美的工作和快过其极高。

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


Answer 3:

添加一开始也不是没有可能改写文件(与追加到末尾)。 你因为没有文件系统的支持根本无法“移动”文件内容。 所以,你应该做的:

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

注意:您需要足够的磁盘空间来保存这两个文件了一会儿。



文章来源: Efficient way to add two lines at the beginning of a very large file