Signaler

Sortie de boucle awk [Résolu]

Posez votre question jachtako 19Messages postés mercredi 16 avril 2014Date d'inscription 15 septembre 2016 Dernière intervention - Dernière réponse le 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
Afficher la suite 
Utile
+0
moins plus
hello
essayer
...
if( t2>datesec)exit:
if (datesec<=t1 && t2<=datesec) ...
Ajouter un commentaire
Utile
+0
moins plus
merci mais sa ne fonctionne pas cherchons encore
Ajouter un commentaire
Utile
+0
moins plus
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 ?
zipe31 33729Messages postés dimanche 7 novembre 2010Date d'inscription ContributeurStatut 30 septembre 2016 Dernière intervention - 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 ? ;-))
Répondre
Ajouter un commentaire
Utile
+0
moins plus
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
Ajouter un commentaire
Utile
+0
moins plus
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 ?
Ajouter un commentaire
Utile
+0
moins plus
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.
Ajouter un commentaire
Utile
+0
moins plus
comme suggéré par zipe037, as tu essayé avec tac à la place de cat ?
Ajouter un commentaire

Les membres obtiennent plus de réponses que les utilisateurs anonymes.

Le fait d'être membre vous permet d'avoir un suivi détaillé de vos demandes.

Le fait d'être membre vous permet d'avoir des options supplémentaires.

Vous n'êtes pas encore membre ?

inscrivez-vous, c'est gratuit et ça prend moins d'une minute !