我想知道是否有更有效的方法来完成这项任务.我正在处理文件的行数从几十万到几百万不等.假设我知道100,000 - 125,000行是包含我正在寻找的数据的行.我想知道是否有一种快速方法从文件中提取这些所需的行.现在我正在使用像这样的grep循环:
for ((i=$start_fid; i<=$end_fid; i++))
do
grep "^$i " fulldbdir_new >> new_dbdir${bscnt}
done
Run Code Online (Sandbox Code Playgroud)
哪个工作正常,它的使用时间比我想要的要长.这些行包含的不仅仅是数字.基本上每行有大约10个字段,第一个是连续整数,每个文件只出现一次.
如果有必要,我很乐意用C语写作.
Cos*_*sta 22
sed 可以做的...
sed -n '100000,125000p' input
编辑:根据格伦杰克曼的建议,可以这样调整效率......
sed -n '100000,125000p; 125001q' input
我用awk:
awk 'NR >= 100000; NR == 125000 {exit}' file
Run Code Online (Sandbox Code Playgroud)
对于大数字,您也可以使用E表示法:
awk 'NR >= 1e5; NR == 1.25e5 {exit}' file
Run Code Online (Sandbox Code Playgroud)
编辑:@glenn jackman的建议(参见评论)