Sortie de boucle awk
Résolu
jachtako
Messages postés
22
Date d'inscription
Statut
Membre
Dernière intervention
-
dubcek Messages postés 18789 Date d'inscription Statut Contributeur Dernière intervention -
dubcek Messages postés 18789 Date d'inscription Statut Contributeur Dernière intervention -
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
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
A voir également:
- Sortie de boucle awk
- Airpods 3 date de sortie - Guide
- Remettre un pc en sortie d'usine - Guide
- Office 2024 date de sortie - Accueil - Bureautique
- Samsung a33 date de sortie - Guide
- Iphone 14 date de sortie - Guide
7 réponses
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 ?
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 ?
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
sa renvoi ceci : volume de donnees : B. nombre de connexions :
il ya que les phrases mais pas de resultat
Vous n’avez pas trouvé la réponse que vous recherchez ?
Posez votre question
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 ?
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 ?