Как получить первые несколько строк из gziped-файла? Я пробовал zcat, но выдает ошибку
zcat CONN.20111109.0057.gz|head
CONN.20111109.0057.gz.Z: A file or directory in the path name does not exist.
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.
tar -xzOf some_huge_file.tar.gz | head
zless file.gz | head
.zmore
все еще оставляет вас с сломанной трубой.zless
кажется, это путь.В некоторых системах (например, Mac) вам необходимо использовать
gzcat
.источник
На Mac вам нужно использовать
<
с zcat:zcat < CONN.20111109.0057.gz|head
источник
Если требуется непрерывный диапазон линий , одним из вариантов может быть:
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-ю строку и так далее.
источник
Этот фрагмент awk позволит вам показать не только первые несколько строк, но и диапазон, который вы можете указать. Он также добавит номера строк, которые мне понадобились для отладки сообщения об ошибке, указывающего на определенную строку в сжатом файле.
Вот фрагмент кода awk, использованный в одном лайнере выше. В awk NR - это встроенная переменная (количество найденных записей), которая обычно эквивалентна номеру строки. переменные from и to выбираются из командной строки с помощью параметров -v.
источник