#1 Le 11/01/2011, à 11:01
- tuxidermiste
Script de décompression et recherche
Bonjour tout le monde,
Voilà j'ai un travail assez pénible qui m'attend ce soir, à savoir traiter une quantité faramineuse de fichiers logs (web, ftp, ssh) sur deux ans.
Quelqu'un pourrait-il m'aider à écrire un petit script qui me permette d'extraire tous les fichiers .log.gz d'un dossier vers un autre, et ensuite de chercher parmis tous ces fichiers .log les lignes contenant le mot RICE précédé ou suivi d'autres lettres/espaces/... ?
Ca fait longtemps que je n'ai plus fait de bash, donc limite même si quelqu'un ne veut pas le faire s'il peut juste me mettre sur la voie ce serait sympa
Mon approche (peut-être mauvaise?) :
Moi je comptais utiliser la commande pour décompresser tous les fichiers .log.gz vers un autre (je ne m'en souviens plus mais j'irais chercher ^^), ensuite faire un cat de tous ces fichiers suivis d'un grep sur RICE.
Seulement le hic c'est qu'il me semble qu'il va bien m'afficher les lignes dans lesquelles je trouverais le mot rice, mais pas le nom des fichiers dans lesquels il a trouvé RICE...
Merci d'avance pour votre aide
Sony VAIO VPCEB2M1E + Kubuntu 11.10
Hors ligne
#2 Le 11/01/2011, à 11:13
- time132
Re : Script de décompression et recherche
Bonjour,
Le cat est inutile à mon avis.
A la racine de tout tes logs tu fais un
grep -r RICE .
Le -r sert à la récursivité.
grep t'indiquera le fichier et la ligne où il trouve le mot recherché.
Dernière modification par time132 (Le 11/01/2011, à 11:14)
Hors ligne
#3 Le 11/01/2011, à 11:44
- tuxidermiste
Re : Script de décompression et recherche
Ah bah c'est plus facile que je ne le pensais alors ^^
Et pour décompresser à la volée le contenu de tous les fichiers .gz vers un dossier mes_logs par exemple il y a une commande magique?
Sony VAIO VPCEB2M1E + Kubuntu 11.10
Hors ligne
#4 Le 11/01/2011, à 13:26
- biotechman
Re : Script de décompression et recherche
ça fonctionne comme tu veux ?
#!/bin/bash
find /path/to/log/ -iname "*.log.gz" -exec cp {} /path/to/file/ \;
cd /path/to/file/
gunzip *.log.gz
egrep .RICE\|RICE. *
On doit pouvoir faire plus court
Dernière modification par biotechman (Le 11/01/2011, à 13:27)
May the source be with you
http://biotechman.com/wordpress
Hors ligne
#5 Le 11/01/2011, à 15:35
- redo_fr
Re : Script de décompression et recherche
Salut, si tu veux décompresser tes logs "juste" pour chercher, c'est inutile
for fic in `ls *.log.gz`; do echo "--- $fic ---" ; zgrep "RICE" $fic ; done
Dernière modification par redo_fr (Le 11/01/2011, à 15:38)
Il n'y a pas de mauvais outils, il n'y a que de mauvais ouvriers
- papy -
Personnellement, je crois que faire des procès est un signe que les affaires vont mal. Je ne dis pas que Microsoft va mal, ce n'est qu'un signe, pas un indicateur...
- Linus Torvalds -
Hors ligne
#6 Le 11/01/2011, à 15:52
- biotechman
Re : Script de décompression et recherche
@ redo_fr:
apparemment, d'après ce qu'il disait, il veut les décompresser absolument.
Par contre, il demandait à ce que le grep ne retourne que le pattern RICE avec un caractère avant et/ou après, c'est pourquoi j'ai utilisé egrep.
De un, je ne connaissais pas zgrep qui est monstrueusement bon [je vais avoir des lignes de scripts perso à modifier ;-) ].
De deux, est-il possible de répondre à sa demande concernant les caractères précédant ou suivant avec zgrep ??
Dernière modification par biotechman (Le 11/01/2011, à 15:52)
May the source be with you
http://biotechman.com/wordpress
Hors ligne
#7 Le 11/01/2011, à 16:43
- redo_fr
Re : Script de décompression et recherche
cd /repertoire/destination ; for fic in `find /repertoire/source -iname "*.log.gz"` ; do mv ${fic} . ; gunzip `echo ${fic} | awk -F/ '{print $NF}'` ; done
grep -H 'RICE' *.log
Pour ce qui est de la recherche, sa demande est
chercher parmis tous ces fichiers .log les lignes contenant le mot RICE précédé ou suivi d'autres lettres/espaces/...
donc toute la ligne...
Il n'y a pas de mauvais outils, il n'y a que de mauvais ouvriers
- papy -
Personnellement, je crois que faire des procès est un signe que les affaires vont mal. Je ne dis pas que Microsoft va mal, ce n'est qu'un signe, pas un indicateur...
- Linus Torvalds -
Hors ligne
#8 Le 11/01/2011, à 16:48
- tuxidermiste
Re : Script de décompression et recherche
En effet il ne me faut pas spécialement décompresser les logs, je pensais que c'était une étape obligatoire Le truc principal qu'il me faut c'est le nom du fichier qui contient cette chaîne de caractères.
Je ne m'attendais pas à autant d'aide (vu que je n'avais même pas une ébauche de script parfois les gens n'aiment pas faire le job pour les autres :s) c'est vraiment sympa de votre part, et grâce à vous et linux j'évite d'ouvrir 1500 fichiers en faisant pour chacun un CTRL+F
Je teste tout ça ce soir une fois que j'aurais fini de téléchargé tous les fichiers logs (il y en a un paquet et heureusement j'ai trouvé un script pour le faire à ma place ^^ que c'est pratique ces scripts bash quand même !).
Dernière modification par tuxidermiste (Le 11/01/2011, à 16:49)
Sony VAIO VPCEB2M1E + Kubuntu 11.10
Hors ligne
#9 Le 11/01/2011, à 17:52
- biotechman
Re : Script de décompression et recherche
@redo_fr:
ton grep va retourner un résultat positif même si le seul mot de la ligne est RICE.
Avec une expression régulière on peut supprimer ces lignes du résultat et ne garder que celles qui sont précédées ou suivies par une lettre/espace et autres, chose demandée initialement.
Désolé de jouer sur la nuance, mais elle peut avoir son importance dans certains cas.
Dernière modification par biotechman (Le 11/01/2011, à 17:55)
May the source be with you
http://biotechman.com/wordpress
Hors ligne
#10 Le 11/01/2011, à 21:12
- ehmicky
Re : Script de décompression et recherche
`echo ${fic} | awk -F/ '{print $NF}'`
Tu peux faire simplement (même résultat) :
"${fich##*/}"
ou utiliser basename.
Sinon, pour le topic, simplement :
find /path/to/log -iname "*.log.gz" -exec tar -Oxf {} \; | grep ".RICE."
Ou si tu veux absolument décompresser :
find /path/to/log -iname "*.log.gz" -exec tar -xf {} -C /path/to/dest \;
grep -r ".RICE." /path/to/dest
Dernière modification par ehmicky (Le 11/01/2011, à 21:41)
Stego++, bibliothèque libre de stéganographie (avec cryptographie), à venir !
Besoin de votre aide :
Stats sur les compilateurs C++ les plus utilisés
Comment utiliser les archetypes C++ ?
Hors ligne
#11 Le 14/01/2011, à 02:55
- ehmicky
Re : Script de décompression et recherche
Autre solution :
find /path/to/log -iname "*.log.gz" -exec tar -xf {} --to-command="grep .RICE." \;
Dernière modification par ehmicky (Le 14/01/2011, à 02:56)
Stego++, bibliothèque libre de stéganographie (avec cryptographie), à venir !
Besoin de votre aide :
Stats sur les compilateurs C++ les plus utilisés
Comment utiliser les archetypes C++ ?
Hors ligne