假设我有一个包含100M行的大文本文件;删除前N行最有效的方法是什么,例如50M行。正如我所尝试的那样,仅用vim打开这个文件就需要几分钟。有没有更有效的方法来实现这一点?
100M
50M
ohtdti5x1#
tail -n +50000000 file > tmp && mv tmp file
如果你没有足够的存储空间来复制输入文件,那么就可以在适当的位置编辑它(即不像所有的命令行“就地”编辑工具(如sed,perl等)那样使用临时文件。使用,也不是像ed使用的输入文件大小的缓冲区),您可以这样做:
sed
perl
ed
bytes=$(head -50000000 file |wc -c) dd if=file bs="$bytes" skip=1 conv=notrunc of=file truncate -s "-$bytes" file
有关最后一个脚本的更多信息,请参见https://stackoverflow.com/a/17331179/1745001。
1条答案
按热度按时间ohtdti5x1#
如果你没有足够的存储空间来复制输入文件,那么就可以在适当的位置编辑它(即不像所有的命令行“就地”编辑工具(如
sed
,perl
等)那样使用临时文件。使用,也不是像ed
使用的输入文件大小的缓冲区),您可以这样做:有关最后一个脚本的更多信息,请参见https://stackoverflow.com/a/17331179/1745001。