为什么要花这么长时间才能读取文件的前几行?

为什么要花这么长时间才能读取文件的前几行?

我有一个巨大的文本文件 ~ 33Gb,由于其大小,我只想阅读文件的前几行以了解文件的组织方式。我尝试过head,但花了很长时间才完成跑步。是因为在 UNIX 中,head需要先运行整个文件才能执行任何操作吗?如果是这样,是否有更快的方法来显示此类文件的一部分?

答案1

这并不能真正回答你的问题;我怀疑速度慢的原因head如下朱莉·佩尔蒂埃的答案:该文件不包含任何(或许多)换行符,因此head需要阅读大量文件才能找到要显示的行。head当然不需要在执行任何操作之前读取整个文件,并且一旦达到请求的行数,它就会停止读取。

为了避免与换行相关的速度减慢,或者如果您不关心查看特定的行数,查看文件开头的快速方法是使用dd;例如,要查看 的前 100 个字节hugefile

dd if=hugefile bs=100 count=1

另一种选择,给出为什么 GNU head/tail 读取整个文件?,是使用-c以下选项head

head -c 100 hugefile

答案2

我唯一见过类似的情况是文件没有换行,因为head只从文件中读取所需的行数。

相关内容