假设我有一个包含100M
行的大型文本文件;删除它的前N行,例如50M
lines.txt,最有效的方法是什么?
正如我所尝试的,仅使用 vim 打开该文件将需要几分钟的时间。
有没有更有效的方法来实现这一目标?
tail -n +50000000 file > tmp && mv tmp file
Run Code Online (Sandbox Code Playgroud)
如果您没有足够的存储空间来几乎复制输入文件,那么要真正就地编辑它(即不使用像所有命令行“就地”编辑工具(如 、sed
等)那样的临时文件perl
,也不使用缓冲区输入文件的大小(如ed
使用)您可以这样做:
bytes=$(head -50000000 file |wc -c)
dd if=file bs="$bytes" skip=1 conv=notrunc of=file
truncate -s "-$bytes" file
Run Code Online (Sandbox Code Playgroud)
有关最后一个脚本的更多信息,请参阅/sf/answers/1213182561/ 。
归档时间: |
|
查看次数: |
1415 次 |
最近记录: |