Leggere file compressi senza estrarli

Leggere file compressi senza estrarli

Normalmente quando abbiamo a che fare con un file compresso, ad esempio un .bz, per poterci lavorare sopra prima dobbiamo estrarlo, cioè riportarlo alla sua forma non compressa. Un esempio tipico sono i file di log che vengono archiviati dal sistema per un certo numero di giorni in formato compresso. Ad esempio sulla mia workstation Linux ho:


$ ls /var/log/sys*
/var/log/syslog       /var/log/syslog.3.gz  /var/log/syslog.6.gz
/var/log/syslog.1     /var/log/syslog.4.gz  /var/log/syslog.7.gz
/var/log/syslog.2.gz  /var/log/syslog.5.gz

dove /var/log/syslog è il log corrente, gli altri sono i log degli ultimi 7 giorni archiviati in formato compresso. Come abbiamo detto per poter leggere uno di quei log la cosa che verrebbe più naturale è di usare gunzip per decomprimerlo in modo da poterlo poi leggere con cat o less. A operazione terminata dovrei poi ricomprimerlo per rimettere le cose come stavano.

Oppure posso usare i comandi zcat e zless che fanno esattamente la stessa cosa di cat e less ma possono operare direttamente su file compressi con gzip.

Esempio:


$ zcat /var/log/syslog.5
Sep 16 09:37:45 maurizio-mint anacron[1202]: Job `cron.daily' terminated (exit status: 1) (mailing output)
Sep 16 09:37:45 maurizio-mint anacron[1202]: Can't find sendmail at /usr/sbin/sendmail, not mailing output
Sep 16 09:37:45 maurizio-mint anacron[1202]: anacron: Can't find sendmail at /usr/sbin/sendmail, not mailing output
Sep 16 09:37:45 maurizio-mint anacron[1202]: Normal exit (1 job run)
...

Nel caso in cui questi comandi non fossero disponibili sul vostro sistema, potete comunque concatenare dei comandi per ottenere lo stesso risultato:


$ cat /var/log/syslog.5.gz | gunzip
Sep 16 09:37:45 maurizio-mint anacron[1202]: Job `cron.daily' terminated (exit status: 1) (mailing output)
Sep 16 09:37:45 maurizio-mint anacron[1202]: Can't find sendmail at /usr/sbin/sendmail, not mailing output
Sep 16 09:37:45 maurizio-mint anacron[1202]: anacron: Can't find sendmail at /usr/sbin/sendmail, not mailing output
Sep 16 09:37:45 maurizio-mint anacron[1202]: Normal exit (1 job run)
...

In questo modo non dovrete perdere tempo a decomprimere il file originale e poi ricomprimerlo a lavoro finito.

Currently there are no comments, so be the first!