2016-10-05 86 views
0

如何从100mil行* .gz文件返回行间隔?如何从压缩文件中提取行间隔/范围?

假设我需要从15mil到20mil的5mil行?

这是表现最好的选择吗?

zcat myfile.gz|head -20000000|tail -500 
real 0m43.106s 
user 0m43.154s 
sys  0m9.259s 
+0

或'zcat file | awk'NR> 14999999 && NR <2000001 {if(NR> 20000001)exit}'> outfile'可能会快一点。 – shellter

回答

1

这是一个完全合理的选择;既然你不知道一条线是多久,你基本上不得不解压缩和迭代线来找出线分隔符在哪里。所有这三种工具都进行了相当多的优化,所以I/O和解压缩时间可能会占主导地位。从理论上讲,在单个可执行文件中结合使用所有三种工具的自己的解决方案可能会节省一点(通过降低IPC的成本),但节省的成本可能可以忽略不计。

相关问题