Come ottenere le prime righe da un file gziped? Ho provato zcat, ma genera un errore
zcat CONN.20111109.0057.gz|head
CONN.20111109.0057.gz.Z: A file or directory in the path name does not exist.
Come ottenere le prime righe da un file gziped? Ho provato zcat, ma genera un errore
zcat CONN.20111109.0057.gz|head
CONN.20111109.0057.gz.Z: A file or directory in the path name does not exist.
Risposte:
zcat(1)
può essere fornito da uno compress(1)
o da gzip(1)
. Sul tuo sistema, sembra compress(1)
che stia cercando un file con .Z
un'estensione.
Passa a gzip -cd
al posto di zcat
e il tuo comando dovrebbe funzionare bene:
gzip -cd CONN.20111109.0057.gz | head
Spiegazione
-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
ti lascia ancora con la pipa rotta. zless
sembra essere la strada da percorrere.
Su alcuni sistemi (ad esempio, Mac), è necessario utilizzare gzcat
.
Su un Mac devi usare <
con zcat:
zcat < CONN.20111109.0057.gz|head
Se è necessario un intervallo continuo di linee , un'opzione potrebbe essere:
gunzip -c file.gz | sed -n '5,10p;11q' > subFile
dove le righe comprese tra la 5a e la 10a riga (entrambe comprese) di file.gz
vengono estratte in un nuovo file subFile
. Per le sed
opzioni, fare riferimento al manuale .
Se ogni, diciamo, la quinta riga è richiesta:
gunzip -c file.gz | sed -n '1~5p;6q' > subFile
che estrae la 1 ° linea e salta su 4 linee e sceglie la 5 ° linea e così via.
Questo frammento di awk ti consentirà di mostrare non solo le prime righe, ma un intervallo che puoi specificare. Aggiungerà anche i numeri di riga di cui avevo bisogno per il debug di un messaggio di errore che punta a una certa riga in basso in un file gzip.
gunzip -c file.gz | awk -v from=10 -v to=20 'NR>=from { print NR,$0; if (NR>=to) exit 1}'
Ecco lo snippet di awk utilizzato nell'unico rivestimento sopra. In awk NR è una variabile incorporata (Numero di record trovati finora) che di solito è equivalente a un numero di riga. le variabili from e to vengono prelevate dalla riga di comando tramite le opzioni -v.
NR>=from {
print NR,$0;
if (NR>=to)
exit 1
}
tar -xzOf some_huge_file.tar.gz | head