2016-10-05 2 views
0

100mil行* .gzファイルから行間隔を戻すにはどうすればよいですか?圧縮ファイルから行の間隔/範囲を抽出する方法は?

私は15ミルから20ミルまでの5ミルの行が必要ですか?

これは最適な実行オプションですか?

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

これは完全に合理的なオプションです。行の長さが分からないので、基本的に行を圧縮解除して繰り返し、行区切りがどこにあるのか把握する必要があります。これらの3つのツールはすべて非常に高度に最適化されているため、I/Oと復元時間は関係なく支配されます。

理論的には、1つの実行可能ファイルに3つのツールすべてを組み合わせた独自のソリューションをローリングすると、(IPCのコストを少し下げることによって)少しは節約できるかもしれませんが、節約は無視できる程度です。

関連する問題