从大型文本文件中删除起始行的快速方法

从大型文本文件中删除起始行的快速方法

我有一个大文本文件(>500GB),我能找到的所有方法(sed/tail 等)都需要将 500GB 内容写入磁盘。有没有办法快速删除前几行而不将 500GB 写入磁盘?

答案1

您可以使用sed以下选项来就地删除行-i

$ cat foo.txt
bar
baz
lorem
$ sed -i '1d' foo.txt
$ cat foo.txt
baz
lorem

您还可以删除一系列行;例如sed -i '1,4d' foo.txt将删除第 1-4 行。

编辑:正如唐在评论中指出的那样,该-i选项仍然创建副本。

答案2

通过以这种方式使用 tail 命令:

# tail -n +<lines to skip> filename

例如:

tail -n +1000 hugefile.txt > hugefile-wo-the-first-1000-lines.txt

仅此而已。- 欲了解更多信息:https://es.wikipedia.org/wiki/Tail

顺便说一句:如果有人告诉您这与您想要做的完全相反,请不要被愚弄,我已经测试过:

$ tail -n +3 /tmp/test 
3
4
5

$ cat /tmp/test 
1
2
3
4
5

相关内容