Hier, j’avais besoin de faire une recherche dans les logs de mon serveur linux. Or, ceux-ci sont automatiquement compressés tous les jours par gzip. On se retrouve donc avec des fichiers .gz journaliers. Grep n’est pas capable d’en extraire du texte bien sûr.
La solution est de décompresser le fichier vers la sortie standard (stdout) et de faire le grep dessus. Par exemple:
gunzip -c *.gz | grep <motclé> tar xzfO *.tar.gz | grep <motclé> tar xfO *.tar | grep <motclé> |
Bulletins (RSS)
Pour la première ligne (gunzip -c *.gz | grep ), il y a aussi: zgrep,
par contre, je n’ai pas trouvé de ztargrep…
zgrep – search possibly compressed files for a regular expression
SYNOPSIS
zgrep [ grep_options ] [ -e ] pattern filename...DESCRIPTION
Zgrep invokes grep on compressed or gzipped files. All options speci- fied are passed directly to grep. If no file is specified, then the standard input is decompressed if necessary and fed to grep. Otherwise the given files are uncompressed if necessary and fed to grep.If the GREP environment variable is set, zgrep uses it as the grep pro- gram to be invoked.Tant qu’à parler de gzip, une fonction déroutante, est que le format gzip contient un champ pour la date de modification du fichier compressé (ou date de compression).
Ce qui fait que si on 2 fichiers (non compressés) au contenu identique fichier1.txt dans fichier2.txt,
Mais, si on les compressent avec gzip (pas en même temps), on aura deux fichiers compressés différents
Heureusement, on peut alors utiliser zcmp pour comparer les contenus
http://tools.ietf.org/html/rfc1952
MTIME (Modification TIME)
This gives the most recent modification time of the original file being compressed. The time is in Unix format, i.e., seconds since 00:00:00 GMT, Jan. 1, 1970. (Note that this may cause problems for MS-DOS and other systems that use local rather than Universal time.) If the compressed data did not come from a file, MTIME is set to the time at which compression started. MTIME = 0 means no time stamp is available.