Comment récupérer les premières lignes d'un fichier gzip? J'ai essayé zcat, mais ça lance une erreur
zcat CONN.20111109.0057.gz|head
CONN.20111109.0057.gz.Z: A file or directory in the path name does not exist.
Comment récupérer les premières lignes d'un fichier gzip? J'ai essayé zcat, mais ça lance une erreur
zcat CONN.20111109.0057.gz|head
CONN.20111109.0057.gz.Z: A file or directory in the path name does not exist.
Réponses:
zcat(1)
peut être fourni par compress(1)
ou par gzip(1)
. Sur votre système, cela semble être compress(1)
- il recherche un fichier avec une .Z
extension.
Basculez sur gzip -cd
à la place de zcat
et votre commande devrait fonctionner correctement:
gzip -cd CONN.20111109.0057.gz | head
Explication
-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
vous laisse toujours avec un tuyau cassé. zless
semble être la voie à suivre.
Sur certains systèmes (par exemple, Mac), vous devez utiliser gzcat
.
Sur un Mac, vous devez utiliser <
avec zcat:
zcat < CONN.20111109.0057.gz|head
Si une plage continue de lignes est nécessaire, une option peut être:
gunzip -c file.gz | sed -n '5,10p;11q' > subFile
où les lignes entre les 5e et 10e lignes (toutes deux incluses) de file.gz
sont extraites dans un nouveau subFile
. Pour les sed
options, reportez-vous au manuel .
Si chaque, disons, la cinquième ligne est requise:
gunzip -c file.gz | sed -n '1~5p;6q' > subFile
qui extrait la 1ère ligne et saute sur 4 lignes et sélectionne la 5ème ligne et ainsi de suite.
Cet extrait de code awk vous permettra d'afficher non seulement les premières lignes, mais également une plage que vous pouvez spécifier. Il ajoutera également les numéros de ligne dont j'avais besoin pour déboguer un message d'erreur pointant vers une certaine ligne dans un fichier gzippé.
gunzip -c file.gz | awk -v from=10 -v to=20 'NR>=from { print NR,$0; if (NR>=to) exit 1}'
Voici l'extrait awk utilisé dans la seule ligne ci-dessus. Dans awk NR est une variable intégrée (Nombre d'enregistrements trouvés jusqu'à présent) qui équivaut généralement à un numéro de ligne. les variables from et to sont récupérées depuis la ligne de commande via les options -v.
NR>=from {
print NR,$0;
if (NR>=to)
exit 1
}
tar -xzOf some_huge_file.tar.gz | head