Forum |  HardWare.fr | News | Articles | PC | S'identifier | S'inscrire | Shop Recherche
2820 connectés 

 


Dernière réponse
Sujet : [script shell linux] demande d'aide
mytoo Vous pouvez fermer ce sujet
 
la suite ce trouve [SCRIPT SHELL] Convertion de date :http://forum.hardware.fr/hardwaref [...] 6981-1.htm

Votre réponse
Nom d'utilisateur    Pour poster, vous devez être inscrit sur ce forum .... si ce n'est pas le cas, cliquez ici !
Le ton de votre message                        
                       
Votre réponse


[b][i][u][strike][spoiler][fixed][cpp][url][email][img][*]   
 
   [quote]
 

Options

 
Vous avez perdu votre mot de passe ?


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

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

steph73 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
mytoo

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

bobuse et ben ça marche pas ça ?
grep "$jour" monordi.log > monordi.$jour.log
mytoo 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
steph73 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.
 
splurf logrotate est fait pour ça à la base .....
bobuse

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

mytoo 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

powaaaaa

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


mytoo tjs personne pour m'aider? :(
mytoo

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

bobuse


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

Taz

mytoo a écrit :

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

man perl

Klaimant

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 :)

mytoo 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:
Klaimant ca serait pas des logs de squid ou de apache par hazard ??
 
mytoo 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


Copyright © 1997-2025 Groupe LDLC (Signaler un contenu illicite / Données personnelles)