Как получить несколько строк из сжатого файла .gz без разжатия
Как получить первые несколько строк из файла gziped?
Я пробовал zcat, но его выброс ошибки
zcat CONN.20111109.0057.gz|head
CONN.20111109.0057.gz.Z: A file or directory in the path name does not exist.
Ответ 1
zcat(1) может поставляться либо compress(1), либо gzip(1). В вашей системе он выглядит как compress(1) - он ищет файл с расширением .Z.
Переключитесь на gzip -cd вместо zcat, и ваша команда должна работать нормально:
gzip -cd CONN.20111109.0057.gz | head
Объяснение
-c --stdout --to-stdout
Write output on standard output; keep original files unchanged. If there are several input files, the output consists of a sequence of independently compressed members. To obtain better compression, concatenate all input files before compressing
them.
-d --decompress --uncompress
Decompress.
Ответ 2
В некоторых системах (например, Mac) вам нужно использовать gzcat.
Ответ 3
На mac вам нужно использовать < с zcat:
zcat < CONN.20111109.0057.gz|head
Ответ 4
Если нужен непрерывный диапазон строк, один из вариантов может быть следующим:
gunzip -c file.gz | sed -n '5,10p;11q' > subFile
где строки между 5-й и 10-й строками (обе включительно) из file.gz извлекаются в новый subFile. Для опций sed см. руководство.
Если требуется каждая, скажем, 5-я строка :
gunzip -c file.gz | sed -n '1~5p;6q' > subFile
который извлекает 1-ю строку, перепрыгивает через 4 строки и выбирает 5-ю строку и так далее.