我正在尝试重命名大文件的列标题,我想知道最有效的方法。文件的长度为 10M 到 50M 行,每行约 100 个字符,共 10 列。
有人提出类似的问题,删除第一行,最佳答案涉及“tail”。使用 sed 有效地就地删除大文件头?
我的猜测是:
bash-4.2$ seq -w 100000000 1 125000000 > bigfile.txt
bash-4.2$ tail -n +2 bigfile.txt > bigfile.tail && sed '1 s/^/This is my first line\n/' bigfile.tail > bigfile.new && mv -f bigfile.new bigfile.txt;
有更快的方法吗?
答案1
- 将新标头输出到新文件,例如
printf "This is my first line\n > bigfile.new
. - 使用 的来使用追加重定向来提供其余部分
tail
:。bigfile
>>
备注:tail +2
“GNUism”——适用于大多数 Linux 发行版,但不兼容 POSIX,并且可能不适用于其他 Unices。
答案2
假设bash
使用 Linux,这可能比您问题中的代码更快:
(echo "New headers";tail +2 bigfile.txt) > newbigfile.txt && mv newbigfile.txt bigfile.txt