¿Cómo obtener las primeras líneas de un archivo gziped? Intenté zcat, pero arroja un error
zcat CONN.20111109.0057.gz|head
CONN.20111109.0057.gz.Z: A file or directory in the path name does not exist.
¿Cómo obtener las primeras líneas de un archivo gziped? Intenté zcat, pero arroja un error
zcat CONN.20111109.0057.gz|head
CONN.20111109.0057.gz.Z: A file or directory in the path name does not exist.
Respuestas:
zcat(1)
puede ser suministrado por cualquiera compress(1)
o por gzip(1)
. En su sistema, parece estar compress(1)
: está buscando un archivo con una .Z
extensión.
Cambie a gzip -cd
en lugar de zcat
y su comando debería funcionar bien:
gzip -cd CONN.20111109.0057.gz | head
Explicación
-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
todavía te deja con la tubería rota. zless
parece ser el camino a seguir.
En algunos sistemas (por ejemplo, Mac), es necesario utilizar gzcat
.
En una mac, debe usar <
con zcat:
zcat < CONN.20111109.0057.gz|head
Si se necesita un rango continuo de líneas , una opción podría ser:
gunzip -c file.gz | sed -n '5,10p;11q' > subFile
donde las líneas entre las líneas 5 y 10 (ambas inclusive) de file.gz
se extraen en un nuevo subFile
. Para conocer las sed
opciones, consulte el manual .
Si se requiere cada, digamos, la quinta línea :
gunzip -c file.gz | sed -n '1~5p;6q' > subFile
que extrae la 1ª línea y salta 4 líneas y elige la 5ª línea y así sucesivamente.
Este fragmento de awk le permitirá mostrar no solo las primeras líneas, sino un rango que puede especificar. También agregará los números de línea que necesitaba para depurar un mensaje de error que apunta a una cierta línea hacia abajo en un archivo comprimido con gzip.
gunzip -c file.gz | awk -v from=10 -v to=20 'NR>=from { print NR,$0; if (NR>=to) exit 1}'
Aquí está el fragmento de awk que se usa en la línea anterior. En awk NR es una variable incorporada (Número de registros encontrados hasta ahora) que generalmente es equivalente a un número de línea. las variables desde y hasta se recogen de la línea de comandos mediante las opciones -v.
NR>=from {
print NR,$0;
if (NR>=to)
exit 1
}
tar -xzOf some_huge_file.tar.gz | head