我想知道是否有更有效的方法完成这个任务。 我正在处理行数从几十万到几百万的文件。假设我知道第100,000至125,000行是包含我寻找的数据的行。我想知道是否有一种快速的方法只从文件中提取所需的行。现在我正在使用类似于grep的循环,如下所示:
for ((i=$start_fid; i<=$end_fid; i++))
do
grep "^$i " fulldbdir_new >> new_dbdir${bscnt}
done
这个工作正常运行,但需要的时间比我想象的要长。每行代码不只包含数字,基本上每行有大约10个字段,第一个字段是一个顺序整数,每个文件只出现一次。
如果必要的话,我可以使用C语言编写。
sed -n '100000,125000p; 125001q'
可以增加效率。 - glenn jackmansed
如何处理你正在引用的模式空间的方式。在这种情况下,'100000,125000p' 部分表示要 打印 模式空间 100000,125000(即第100000行到第125000行),而 '125001q' 部分告诉它在第125001行 退出,因为你已经得到了所需内容。 - Costa