2016-10-05 32 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的成本),但節省的成本可能可以忽略不計。

相關問題