从文本文件中取出片段的最佳方法是什么?右侧边栏中的许多其他内容几乎是重复的。
一个区别是我的文件太大而无法放入可用的 RAM + VM 中,所以我尝试的任何东西不仅会在几分钟内什么都不做,直到被杀死,而且会使系统陷入困境。其中一个让我无法做任何事情,直到系统崩溃。
我可以在 shell 或任何其他程序中编写一个循环来读取、计数和丢弃行,直到达到计数(所需的行号),但也许已经存在一个命令可以做到这一点?
在尝试了一些东西(vim、head -X | tail -1、GUI 编辑器)之后,我放弃了,删除了文件并更改了创建它的程序,只给了我需要的行。
进一步看,打开大小大于 RAM 的文件,不使用交换。建议 vi 应该这样做,但如果 vi 相同,它肯定会做一些需要几分钟而不是几秒钟的事情。
你应该试试
less
。从手册页:
我定期用更少的文件打开大文件,并且启动时间没有问题。如果将它与 option 结合使用
-jn
,您基本上可以在很短的时间内到达文件的每个部分。我没有对此进行测试,因为我需要一个相当大的文件,但结合头部,您也可以编写
more
更适合脚本的脚本。more +$START_LINE_NUMBER | head -n$AMOUNT_OF_LINES
如果我理解正确的头部应该在获得所需数量的线路后完成管道过程,所以这个解决方案应该是您正在寻找的低开销解决方案。