[script shell linux] demande d'aide

demande d'aide [script shell linux] - Linux et OS Alternatifs

Marsh Posté le 13-05-2004 à 22:36:17    

Bonjour,
 
J'aimerais savoir comment feriez vous votre script
pour trier par date les logs
 
j'ai un fichier monordi.log, comportant les lignes suivantes:

Code :
  1. 1.2.3.4 - - [28/Mar/2004:20:30:00 +0200] "TEXTE"
  2. 1.5.3.4 - - [18/Apr/2004:22:30:00 +0200] "TEXTE"
  3. 1.2.3.4 - - [12/May/2004:20:30:00 +0200] "TEXTE"
  4. 1.5.3.4 - - [12/May/2004:22:30:00 +0200] "TEXTE"
  5. 1.2.3.124 - - [14/May/2004:22:30:00 +0200] "TEXTE"
  6. 1.2.3.124 - - [18/May/2004:22:30:00 +0200] "TEXTE"
  7. 1.2.3.124 - - [19/May/2004:22:30:00 +0200] "TEXTE"


 
j'aimerais à partir de ce log, obtenir autant de fichier que de jour, avec ce format de date comme nom de fichier(à l'aide d'un script)
monordi.200400328.log
monordi.200400418.log
monordi.20040512.log
monordi.20040514.log
...
 
tous ces fichiers comporterait seulement leur log
monordi.200400328.log comportera la ligne
1.2.3.4 - - [28/Mar/2004:20:30:00 +0200] "TEXTE"
...
 
j'espère mettre fais comprendre,
espérant qu'une âme charitable pourra me donner un coup de main dès ce soir
 
merci
 
je m'excuse d'avance, si un post existe déjà merci de me l'indiquer


Message édité par mytoo le 13-05-2004 à 22:38:15

---------------
La connaissance se partage
Reply

Marsh Posté le 13-05-2004 à 22:36:17   

Reply

Marsh Posté le 13-05-2004 à 22:38:08    

ca serait pas des logs de squid ou de apache par hazard ??
 


Message édité par Klaimant le 13-05-2004 à 22:41:57

---------------
Fais le ou ne le fais pas, mais il n'y a pas d'essai !!!
Reply

Marsh Posté le 13-05-2004 à 22:41:42    

non du tout, c'est un petit exercice que j'aimerais savoir faire
 
je vois que tu as rééditer  ;)
 
bon, si on revenais à monproblème, je ne voudrais pas me faire crier dessus, parce que nous faisons du chat  :pt1cable:


Message édité par mytoo le 13-05-2004 à 22:44:55

---------------
La connaissance se partage
Reply

Marsh Posté le 13-05-2004 à 22:42:15    

mytoo a écrit :

non du tout, c'est un petit exercice que j'aimerais savoir faire
 
les logs de squid ne se présente pas comme çà, (apache je sais plus)


 
sisi squid peu se présenter comme ca :)


---------------
Fais le ou ne le fais pas, mais il n'y a pas d'essai !!!
Reply

Marsh Posté le 14-05-2004 à 07:04:45    

mytoo a écrit :

non du tout, c'est un petit exercice que j'aimerais savoir faire

man perl

Reply

Marsh Posté le 14-05-2004 à 09:14:18    


ouah, et ben bon courage :D
Ca c'est du man, encore pire que bash :)  
 
Mais bon, faut bien y passer !

Reply

Marsh Posté le 14-05-2004 à 09:48:05    

bobuse a écrit :

ouah, et ben bon courage :D
Ca c'est du man, encore pire que bash :)  
 
Mais bon, faut bien y passer !


merde, déjà que les script bash, je ne connais pas bcp de commande, ben alors le perl j'en parle même pas  :cry:
 
apparemment çà existe en sh
extration/répartition de fichier, masi je ne trouve pas


Message édité par mytoo le 14-05-2004 à 10:08:29

---------------
La connaissance se partage
Reply

Marsh Posté le 14-05-2004 à 14:11:03    

tjs personne pour m'aider? :(


---------------
La connaissance se partage
Reply

Marsh Posté le 14-05-2004 à 14:22:44    

bobuse a écrit :

ouah, et ben bon courage :D
Ca c'est du man, encore pire que bash :)  
 
Mais bon, faut bien y passer !


 
faux !


[zoph@pomme:~]$ man perl | wc -l
Remise en forme de perl(1), attendez SVP...
380
[zoph@pomme:~]$ man bash | wc -l
Remise en forme de bash(1), attendez SVP...
4522


Reply

Marsh Posté le 14-05-2004 à 14:29:18    

j'ai çà


[zoph@pomme:~]$ man perl | wc -l
394
[zoph@pomme:~]$ man bash | wc -l
4513


 
wc --help
 
thx powaaaaa, je regarde çà (à moins que c'ets juste pour dire qu'il y a plus de possibilité avec bash que perl)
 
ben çà va me servir à quoi de pouvoir compter le nb de caractère ou de mot?
il y a pas une fonction qui extrait la date des crochets [],
puis que l'on peut formatter :??:  
 
 :cry: je n'y arrive pas


Message édité par mytoo le 14-05-2004 à 14:41:49

---------------
La connaissance se partage
Reply

Marsh Posté le 14-05-2004 à 14:29:18   

Reply

Marsh Posté le 14-05-2004 à 14:49:59    

powaaaaa a écrit :

faux !


[zoph@pomme:~]$ man perl | wc -l
Remise en forme de perl(1), attendez SVP...
380
[zoph@pomme:~]$ man bash | wc -l
Remise en forme de bash(1), attendez SVP...
4522




 
rouah l'otre, pour perl, ya pas qu'un man !!
 

ls /usr/share/man/man1/perl* | wc -l
135


 
:D

Reply

Marsh Posté le 14-05-2004 à 15:25:52    

logrotate est fait pour ça à la base .....

Reply

Marsh Posté le 14-05-2004 à 16:25:18    

for jour in `cat monordi.log | awk -F"[" '{print $2}' | awk -F":" '{print $1}' | sort -n | uniq`
do
    grep "$jour" monordi.log > monordi.$jour.log
done
 
Le "/" peu poser probleme a voir et il y a surement plus simple.
 

Reply

Marsh Posté le 14-05-2004 à 17:02:35    

je te remerci steph73 dejà pour la commande awk -F
car je n'utilisais seulement awk tout court
effectivement pour la crétion de fichier "/" pose un problème, mais c'est pas grave
 
me reste plus cas traduire la date 29/Mar/2004 en 20040329
est c'est niquel
, il doit bien y avoir un formattage de date?
 
au fait c'est un fichier gz (monordi.log.gz)
Puis-je faire
gunzip -c monordi.log.gz
à la place
cat monordi.log?
 
et pour la ligne grep "$jour" monordi.log > monordi.$jour.log , je fais comment si c'est un gz? car j'ai essayé çà
valeur=$(gunzip -c monordi.log.gz | grep "${jour}" )
echo "${valeur}"
"${valeur}" > monordi.2004.log

et bien j'ai bien la variable valeur qui fonctionne mais j'ai une erreur sur l'insertion dans le fichier log
 
je sais je suis nulle


Message édité par mytoo le 14-05-2004 à 17:46:28

---------------
La connaissance se partage
Reply

Marsh Posté le 14-05-2004 à 17:57:24    

et ben ça marche pas ça ?
grep "$jour" monordi.log > monordi.$jour.log

Reply

Marsh Posté le 14-05-2004 à 18:04:39    

Citation :

for jour in `cat monordi.log | awk -F"[" '{print $2}' | awk -F":" '{print $1}' | sort -n | uniq`
do
    grep "$jour" monordi.log > monordi.$jour.log
done
 
Le "/" peu poser probleme a voir et il y a surement plus simple.


 

bobuse a écrit :

et ben ça marche pas ça ?
grep "$jour" monordi.log > monordi.$jour.log


si çà fonctionne sauf que çà ne créer pas le fichier à cause des /
ex monord.29/mar/2004.log
j'ai essayé
     grep "$jour" monordi.log > monordi.test.log
et il affiche bien dans le dernier fichier des lignes
 
Voilà ce que j'ai essayé aussi sur un fichier monordi.log.gz

Citation :

for jour in `gunzip -c monordi.log.gz | awk -F"[" '{print $2}' | awk -F":" '{print $1}' | sort -n | uniq`
do
valeur=$(gunzip -c monordi.log.gz | grep "${jour}" )  
echo "${valeur}"  
"${valeur}" > monordi.2004.log  
#    grep "$jour" monordi.log > monordi.$jour.log
done


dans ce cas le trie s'effectue bien  
 
mon deuxième soucis serait de convertir par exemple:
29/Mar/2004
en
jj=29
dd=03
yy=2004


Message édité par mytoo le 14-05-2004 à 18:29:19

---------------
La connaissance se partage
Reply

Marsh Posté le 14-05-2004 à 18:15:55    

Pour lire un fichier gz, il y a gzcat, tu peux utiliser une variable temporaire avec la cde sed pour substituer le / par autre chose


Message édité par steph73 le 14-05-2004 à 18:17:05
Reply

Marsh Posté le 14-05-2004 à 18:19:46    

steph73 a écrit :

Pour lire un fichier gz, il y a gzcat, tu peux utiliser une variable temporaire avec la cde sed pour substituer le / par autre chose


excuse-moi çà fontionne, merci en core steph73
(c'est grace à ta cmd
awk -F"[" '{print $2}' | awk -F":" '{print $1}' | sort -n | uniq
que j'y arrive
 
pour infos gzcat à la place de gunzip -c? (j'ai pas la commande gzcat tant pis)
sinon sed pour virer /, pk pas merci
 
 
Me manque juste de savoir comment jouer avec les chiffres
29Mar2004 (après avoir enlever / si j'y arrive) en 20040329


Message édité par mytoo le 14-05-2004 à 18:31:28

---------------
La connaissance se partage
Reply

Marsh Posté le 14-05-2004 à 18:46:23    

Vous pouvez fermer ce sujet
 
la suite ce trouve [SCRIPT SHELL] Convertion de date :http://forum.hardware.fr/hardwaref [...] 6981-1.htm


---------------
La connaissance se partage
Reply

Sujets relatifs:

Leave a Replay

Make sure you enter the(*)required information where indicate.HTML code is not allowed