sed -n '10000000,10000020p' filename
你可能能够加快这一点:
sed -n '10000000,10000020p; 10000021q' filename
在这些命令中,选项-n使sed“抑制模式空间的自动打印”. p命令“print [s]当前模式空间”和q命令“立即退出[s] sed脚本而不再处理任何输入……”引号来自sed man page.
顺便说一句,你的命令
tail -n 10000000 filename | head 10
从文件末尾的第1000万行开始,而你的“中间”命令似乎从一开始就是千万分之一,这相当于:
head -n 10000010 filename | tail 10
问题是对于具有可变长度行的未排序文件,任何进程都必须通过计算换行的文件.没有办法快捷.
但是,如果文件已排序(例如,带有时间戳的日志文件)或具有固定长度的行,则可以根据字节位置搜索文件.在日志文件示例中,您可以像我的Python脚本here *那样进行一系列二进制搜索.在固定记录长度文件的情况下,它真的很容易.您只需在文件中搜索linelength * linecount字符.
*我有意义发布该脚本的另一个更新.也许我会在这些日子里解决这个问题.