在 Linux 上快速跟踪大型文件

在 Linux 上快速跟踪大型文件

我需要获取 1 亿行文件中的最后 1000 万行。

tail -n 10000000 $in_file>$out_file

但是上述命令花费了超过 1 天的时间,并且仍在运行。我想我可以使用 nice 命令为该进程分配更多优先级,但我想知道是否有更好的方法。

答案1

除了将文件分割成几个较小的文件外,您还可以简单地打开文件并将其定位到您可能认为是接近尾声文件的。

之后,你可以读尽可能多的台词,如果你EOF没有读完你想要的 10000000 行,你只需要差异从第一个位置开始猜到了,以及一个新的——先前的——位置,并尝试阅读n = 差异線。

我实际上不知道是否tail这样做,或者是否有任何可用的 POSIX 工具可以执行此类操作;我猜实现这个应该不会超过五分钟(: 可能会有帮助。

相关内容