Как получить первые несколько строк из gziped-файла? Я пробовал zcat, но выдает ошибку
zcat CONN.20111109.0057.gz|head
CONN.20111109.0057.gz.Z: A file or directory in the path name does not exist.
Как получить первые несколько строк из 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.
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 позволит вам показать не только первые несколько строк, но и диапазон, который вы можете указать. Он также добавит номера строк, которые мне понадобились для отладки сообщения об ошибке, указывающего на определенную строку в сжатом файле.
gunzip -c file.gz | awk -v from=10 -v to=20 'NR>=from { print NR,$0; if (NR>=to) exit 1}'
Вот фрагмент кода awk, использованный в одном лайнере выше. В awk NR - это встроенная переменная (количество найденных записей), которая обычно эквивалентна номеру строки. переменные from и to выбираются из командной строки с помощью параметров -v.
NR>=from {
print NR,$0;
if (NR>=to)
exit 1
}
tar -xzOf some_huge_file.tar.gz | head