Як отримати перші декілька рядків із файлу, зібраного у стилі 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 - це вбудована змінна (Кількість записів, знайдених дотепер), яка зазвичай еквівалентна номеру рядка. змінна від і до вибирається з командного рядка за допомогою параметрів -v.
NR>=from {
print NR,$0;
if (NR>=to)
exit 1
}
tar -xzOf some_huge_file.tar.gz | head