если у меня есть файл .gz на Unix, который имеет определенное количество строк. Как я могу считать строки на Unix, не распаковывая его.
command-line
unix
Виджай
источник
источник
Ответы:
Очевидно, что вы не можете считать новые строки, если файл все еще сжат.
Но вы можете распаковать в поток и считать новые строки в этом потоке, даже не записывая (распакованный) файл на диск. Это будет примерно так:
zcat для распаковки и cat, wc для подсчета слов. Смотрите man-страницы для обоих, если вы хотите узнать больше.
РЕДАКТИРОВАТЬ
Если у вас нет zcat, zcat - это просто другое имя для
gunzip -c
.источник
gzip
отличается отcompress
, вы хотитеgzcat
.Это также, кажется, работает - grep для количества концовок в файле
источник
wc -l
Если вы хотите сделать это быстро, я рекомендую использовать «pigz» (что IIRC означает «Параллельная реализация GZip»). У меня просто была похожая ситуация, когда я хотел посчитать количество строк в куче gzip-файлов, и вот мое решение:
Который дал мне количество строк и файл, который он рассчитывал на чередующихся строках, используя 8 процессоров. Это бежало быстро!
источник
for x in *.fastq.gz; do zcat "$x" | wc -l && echo $x; done
Используйте эту команду:
Команда
gzgrep
ведет себя так же, как иgrep
для сжатых GZIP-файлов. Он распаковывает файл на лету для соответствия регулярному выражению.В этом случае
-c
введите команду для вывода количества совпавших строк, и регулярное выражение$
соответствует концу строки, чтобы оно соответствовало каждой строке или файлу.Окончательный результат идентичен
gzip -dc filename.gz | grep -c $
.источник
gzgrep
доступны на других системах , чем Solaris?Если вы согласны с грубой оценкой, а не с точным подсчетом, и на самом деле извлечение всего файла или zgrepping его для концов строк может занять слишком много времени (что было моей ситуацией только сейчас), вы можете:
тогда приблизительное количество строк равно
1000 * (size of $file) / (size of 1000-line-sample)
, если ваши данные достаточно однородны для каждой строки.источник
gzip -cd <file.gz> | wc -l
Это сработало для меня.
источник