#linux #zcat
#linux #zcat
Вопрос:
Как мне вернуть интервал строк из файла 100mil rows * .gz?
Допустим, мне нужно 5 миллионов строк, начиная с 15 миллионов до 20 миллионов?
является ли это наиболее эффективным вариантом?
zcat myfile.gz|head -20000000|tail -500
real 0m43.106s
user 0m43.154s
sys 0m9.259s
Комментарии:
1. или
zcat file | awk 'NR>14999999 amp;amp; NR < 2000001{if (NR > 20000001) exit}' > outfile
может быть немного быстрее.
Ответ №1:
Это вполне разумный вариант; поскольку вы не знаете, какой длины будет строка, вам в основном нужно распаковывать и перебирать строки, чтобы выяснить, где находятся разделители строк. Все три инструмента довольно сильно оптимизированы, поэтому время ввода-вывода и декомпрессии, вероятно, будут доминировать независимо.
Теоретически, создание собственного решения, объединяющего все три инструмента в одном исполняемом файле, может немного сэкономить (за счет небольшого снижения затрат на IPC), но экономия, вероятно, будет незначительной.