Sortie de boucle awk

Résolu/Fermé
jachtako Messages postés 22 Date d'inscription mercredi 16 avril 2014 Statut Membre Dernière intervention 13 octobre 2017 - Modifié par jachtako le 28/04/2014 à 15:26
dubcek Messages postés 18718 Date d'inscription lundi 15 janvier 2007 Statut Contributeur Dernière intervention 22 mars 2024 - 30 avril 2014 à 09:22
Bonjour,
voici un script que j'ai écris

#!/bin/bash
t1=$1
t2=$2
echo $t1 $t2
fich=/home/ctafou/payzen.access.log
if [ -f $fich ]; then
cat $fich | gawk -v t1=$t1 -v t2=$t2 -F ' ' '{split($1,a,"-"); split($2,b,":"); $10; date=substr(a[1],2)" "a[2]" "a[3]" "b[1]" "b[2]" "substr(b[3],1,2); datesec=mktime(date);
if (datesec<=t1 && t2<=datesec) { t+=$10; ++l;} } END {printf "volume de donnees : "t"B. "; printf "nombre de connexions : "l;}' | sort
fi

le but est de connaitre le nombre de connexion et de volume de données échangée pendant un intervalle de temps que le programme reçoit en paramètre.
pour cela je parcourt le fichier du bas vers le haut (date la plus ressente à la date la moins ressente)
cependant je voudrai savoir comment sortir de la boucle une fois que que la date la mois ressente est atteinte de manière à ne pas parcourir tout le fichier genre un "break"

merci



7 réponses

dubcek Messages postés 18718 Date d'inscription lundi 15 janvier 2007 Statut Contributeur Dernière intervention 22 mars 2024 5 615
28 avril 2014 à 16:19
hello
essayer
...
if( t2>datesec)exit:
if (datesec<=t1 && t2<=datesec) ...
0
jachtako Messages postés 22 Date d'inscription mercredi 16 avril 2014 Statut Membre Dernière intervention 13 octobre 2017
28 avril 2014 à 16:41
merci mais sa ne fonctionne pas cherchons encore
0
dubcek Messages postés 18718 Date d'inscription lundi 15 janvier 2007 Statut Contributeur Dernière intervention 22 mars 2024 5 615
29 avril 2014 à 10:27
pour cela je parcourt le fichier du bas vers le haut (date la plus ressente à la date la moins ressente)
la date la plus récente est à la fin du fichier, non ?
et cat lit du début à la fin du fichier, de la date la plus ancienne à la plus récente, non ?
0
zipe31 Messages postés 36402 Date d'inscription dimanche 7 novembre 2010 Statut Contributeur Dernière intervention 27 janvier 2021 6 407
29 avril 2014 à 10:29
Salut,

et cat lit du début à la fin du fichier
Un
tac
serait plus adapté dans ce cas alors, non ? ;-))
0
jachtako Messages postés 22 Date d'inscription mercredi 16 avril 2014 Statut Membre Dernière intervention 13 octobre 2017
Modifié par jachtako le 29/04/2014 à 13:13
ah oui tu as raison, mais j'ai modifier et lorsque j'exécute
sa renvoi ceci : volume de donnees : B. nombre de connexions :
il ya que les phrases mais pas de resultat
0

Vous n’avez pas trouvé la réponse que vous recherchez ?

Posez votre question
dubcek Messages postés 18718 Date d'inscription lundi 15 janvier 2007 Statut Contributeur Dernière intervention 22 mars 2024 5 615
29 avril 2014 à 14:55
si je résume:
soit un fichier log avec dn = une date
d1 (ancien)
d2
d3
d4
d5
d6
d8
d9 (récent)

soit t1 = (par ex) d3 en secs et t2 = d6 en secs, tu veux additionner les données de d3 à d6 et arrêter le awk à d7 pour ne pas lire le reste du fichier ?
0
jachtako Messages postés 22 Date d'inscription mercredi 16 avril 2014 Statut Membre Dernière intervention 13 octobre 2017
29 avril 2014 à 17:01
exactement. c'est ce qui je veux mais dans le sens contraire genre de D5 à D3 et après D3 la boucle s'arrête.
0
dubcek Messages postés 18718 Date d'inscription lundi 15 janvier 2007 Statut Contributeur Dernière intervention 22 mars 2024 5 615
Modifié par dubcek le 30/04/2014 à 09:23
comme suggéré par zipe037, as tu essayé avec tac à la place de cat ?
0