IdentifiantMot de passe
Loading...
Mot de passe oublié ?Je m'inscris ! (gratuit)
Navigation

Inscrivez-vous gratuitement
pour pouvoir participer, suivre les réponses en temps réel, voter pour les messages, poser vos propres questions et recevoir la newsletter

Shell et commandes POSIX Discussion :

Nouvelle contrainte : Analyse des dernières lignes d'un fichier log avec recherche de 2 patterns ...


Sujet :

Shell et commandes POSIX

  1. #1
    Membre à l'essai
    Homme Profil pro
    Technicien réseau
    Inscrit en
    Février 2016
    Messages
    21
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Loiret (Centre)

    Informations professionnelles :
    Activité : Technicien réseau

    Informations forums :
    Inscription : Février 2016
    Messages : 21
    Points : 20
    Points
    20
    Par défaut Nouvelle contrainte : Analyse des dernières lignes d'un fichier log avec recherche de 2 patterns ...
    Bonjour,

    Je reviens à nouveau sur l'évolution d'un sujet précédent.
    Une nouvelle directive vient de m'être demandé et je pêche un peu pour trouver une solution.

    Pour reprendre l'origine du sujet, l'objectif était d'analyser les x dernières lignes d'un fichiers afin d'identifier et de comptabiliser si l'avant dernier champ était un "R" ou "r".

    Le code fonctionnant parfaitement grâce à votre aide est le suivant :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
     
    ligneascan=1
    chaine1=r
    file=/tmpt/toto
     
    nbchainactu=`awk -F ";"  -v NUMLINE=$ligneascan -v pattern=$chaine1 'BEGIN{IGNORECASE=1 ; n=0} NR >= NUMLINE && $(NF-1) ~ /[pattern]/ {n++} END {print n}' $file`
    Une nouvelle contrainte vient de m'être demandé et je dois en plus vérifier si le 7 ème champ de la ligne contient le pattern suivant "AARC_TACHE_UR_CONSO"
    J'aurai souhaité, dans la mesure du possible, faire évoluer la commande sans devoir tout modifier.


    Voici une extraction du fichier (=> on devrait retourner une seule occurence trouvée avec les 2 critères de recherche) :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
     
    cat /tmp/toto
    Ariane_3;2017-02-20 16:14:28.057;DevCenEsb;PrcCourrier46ae7b7c-eff0-4917-828b-20b1b26d0dd9;EDITION_COURRIER_PRC;HERMES;AARC_TACHE_UR_CONSO;D;*;ENTREE;editionCourrierCentral;evtRiche;46ae7b7c-eff0-4917-828b-20b1b26d0dd9;OSIRIS;MCI0;;;refPRC_524000497__46ae7b7c-eff0-4917-828b-20b1b26d0dd9;2017-02-20 12:00:00.0;COUR;PRC;524000497;Prise en charge du courrier depuis PRC.;;; 
    Ariane_3;2017-02-20 15:34:05.169;DevCenEsb;PrcCourrier1fa10301-7fff-43a7-9131-98e10e636abb;EDITION_COURRIER_PRC;HERMES;AARC_COUR_PRC;D;*;SORTIE;editionCourrierCentral;evtRiche;1fa10301-7fff-43a7-9131-98e10e636abb;OSIRIS;MCI0;;;refPRC_524000496__1fa10301-7fff-43a7-9131-98e10e636abb;2017-02-20 12:00:00.0;COUR;PRC;524000496;Fin du traitement de préintégration du courrier.;;R; 
    Ariane_3;2017-02-20 15:34:04.945;DevCenEsb;PrcCourrier1fa10301-7fff-43a7-9131-98e10e636abb;EDITION_COURRIER_PRC;HERMES;AARC_TACHE_UR_CONSO;D;*;ENTREE;editionCourrierCentral;evtRiche;1fa10301-7fff-43a7-9131-98e10e636abb;OSIRIS;MCI0;;;refPRC_524000496__1fa10301-7fff-43a7-9131-98e10e636abb;2017-02-20 12:00:00.0;COUR;PRC;524000496;Prise en charge du courrier depuis PRC.;;r;
    Ariane_3;2017-02-20 16:14:28.057;DevCenEsb;PrcCourrier46ae7b7c-eff0-4917-828b-20b1b26d0dd9;EDITION_COURRIER_PRC;HERMES;AARC_COUR_PRC;D;*;ENTREE;editionCourrierCentral;evtRiche;46ae7b7c-eff0-4917-828b-20b1b26d0dd9;OSIRIS;MCI0;;;refPRC_524000497__46ae7b7c-eff0-4917-828b-20b1b26d0dd9;2017-02-20 12:00:00.0;COUR;PRC;524000497;Prise en charge du courrier depuis PRC.;;;
    Auriez-vous SVP une piste ou solution d'évolution pour répondre à ce besoin ?
    Par avance merci

    Cordialement,

  2. #2
    Expert confirmé
    Homme Profil pro
    Développeur informatique en retraite
    Inscrit en
    Avril 2008
    Messages
    2 101
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Côtes d'Armor (Bretagne)

    Informations professionnelles :
    Activité : Développeur informatique en retraite

    Informations forums :
    Inscription : Avril 2008
    Messages : 2 101
    Points : 5 849
    Points
    5 849
    Par défaut
    À tester:
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    nbchainactu=`awk -F ";"  -v NUMLINE=$ligneascan -v pattern=$chaine1 'BEGIN{IGNORECASE=1 ; n=0} NR >= NUMLINE && $7 ~ /AARC_TACHE_UR_CONSO/ && $(NF-1) ~ /[pattern]/ {n++} END {print n}' $file`

  3. #3
    Membre à l'essai
    Homme Profil pro
    Technicien réseau
    Inscrit en
    Février 2016
    Messages
    21
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Loiret (Centre)

    Informations professionnelles :
    Activité : Technicien réseau

    Informations forums :
    Inscription : Février 2016
    Messages : 21
    Points : 20
    Points
    20
    Par défaut
    Bonjour jack-ft,

    Merci pour votre retour, la proposition répond parfaitement à mes besoins.
    En revanche, si je souhaite passer la nouvelle chaîne à rechercher dans une variable, celle-ci ne me renvoi pas la même valeur !!!!

    fichier en entré :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
     
    Ariane_3;2017-04-04 11:32:38.511;DevCenEsb;AARC_DROITS_PRC;ID_DROITSPRC;HERMES;AARC_TACHE_UR;D;;KO_ERREUR;rectifCarrierePrc;evtRiche;0dc8c71a-04b3-49a2-a397-c76512a4cbOK;URBA;RNGD;;;d9701347-d471-4f9a-aca6-4321b3f395e7;2016-05-18 17:20:12.272;;;;Aucun abonné trouvé pour ce message - ERREUR : Aucun abonnement n'existe dans la table TMP_HERMES_RT_ABONNEMENTS pour le flux : rectifCarrierePrc;;R;2
    Ariane_3;2017-04-04 11:32:38.511;DevCenEsb;AARC_DROITS_PRC;ID_DROITSPRC;HERMES;AARC_TACHE_UR_CONSO;D;;KO_ERREUR;rectifCarrierePrc;evtRiche;0dc8c71a-04b3-49a2-a397-c76512a4cbOK;URBA;RNGD;;;d9701347-d471-4f9a-aca6-4321b3f395e7;2016-05-18 17:20:12.272;;;;Aucun abonné trouvé pour ce message - ERREUR : Aucun abonnement n'existe dans la table TMP_HERMES_RT_ABONNEMENTS pour le flux : rectifCarrierePrc;;R;2
    Ariane_3;2017-04-04 11:32:38.511;DevCenEsb;AARC_DROITS_PRC;ID_DROITSPRC;HERMES;AARC_TACHE_UR_CONSO;D;;KO_ERREUR;rectifCarrierePrc;evtRiche;0dc8c71a-04b3-49a2-a397-c76512a4cbOK;URBA;RNGD;;;d9701347-d471-4f9a-aca6-4321b3f395e7;2016-05-18 17:20:12.272;;;;Aucun abonné trouvé pour ce message - ERREUR : Aucun abonnement n'existe dans la table TMP_HERMES_RT_ABONNEMENTS pour le flux : rectifCarrierePrc;;r;2
    Ariane_3;2017-04-04 11:32:38.511;DevCenEsb;AARC_DROITS_PRC;ID_DROITSPRC;HERMES;AARC_TACHE_UR_CONSO;D;;KO_ERREUR;rectifCarrierePrc;evtRiche;0dc8c71a-04b3-49a2-a397-c76512a4cbOK;URBA;RNGD;;;d9701347-d471-4f9a-aca6-4321b3f395e7;2016-05-18 17:20:12.272;;;;Aucun abonné trouvé pour ce message - ERREUR : Aucun abonnement n'existe dans la table TMP_HERMES_RT_ABONNEMENTS pour le flux : rectifCarrierePrc;;;2
    Ariane_3;2017-04-04 11:32:38.511;DevCenEsb;AARC_DROITS_PRC;ID_DROITSPRC;HERMES;AARC_TACHE_UR;D;;KO_ERREUR;rectifCarrierePrc;evtRiche;0dc8c71a-04b3-49a2-a397-c76512a4cbOK;URBA;RNGD;;;d9701347-d471-4f9a-aca6-4321b3f395e7;2016-05-18 17:20:12.272;;;;Aucun abonné trouvé pour ce message - ERREUR : Aucun abonnement n'existe dans la table TMP_HERMES_RT_ABONNEMENTS pour le flux : rectifCarrierePrc;;R;2
    Ariane_3;2017-04-04 11:32:38.511;DevCenEsb;AARC_DROITS_PRC;ID_DROITSPRC;HERMES;;D;;KO_ERREUR;rectifCarrierePrc;evtRiche;0dc8c71a-04b3-49a2-a397-c76512a4cbOK;URBA;RNGD;;;d9701347-d471-4f9a-aca6-4321b3f395e7;2016-05-18 17:20:12.272;;;;Aucun abonné trouvé pour ce message - ERREUR : Aucun abonnement n'existe dans la table TMP_HERMES_RT_ABONNEMENTS pour le flux : rectifCarrierePrc;;R;2
    Votre commande et le résultat :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
     
    nbchainactu=`awk -F ";"  -v NUMLINE=$ligneascan -v pattern=$chaine1 'BEGIN{IGNORECASE=1 ; n=0} NR >= NUMLINE && $7 ~ /AARC_TACHE_UR_CONSO/ && $(NF-1) ~ /[pattern]/ {n++} END {print n}' $file`
    echo "nbchainactu ==> $nbchainactu"
    Si je passe la nouvelle chaîne de caractère dans une nouvelle variable, le résultat est différent !!! :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
     
    ligneascan=1
    chaine1=r
    chaine2=AARC_TACHE_UR_CONSO
    file=/tmpt/toto
     
    nbchainactu=`awk -F ";"  -v NUMLINE=$ligneascan -v pattern=$chaine1 -v pattern2=$chaine2 'BEGIN{IGNORECASE=1 ; n=0} NR >= NUMLINE && $7 ~ /[pattern2]/ && $(NF-1) ~ /[pattern]/ {n++} END {print n}' $file`
    echo "nbchainactu ==> $nbchainactu"
    Le résultat devrait être 2 du coup !!!
    J'avoue m'y perdre....

Discussions similaires

  1. Réponses: 12
    Dernier message: 04/05/2017, 14h03
  2. Réponses: 1
    Dernier message: 29/04/2015, 15h18
  3. Réponses: 9
    Dernier message: 13/10/2011, 11h27
  4. [MySQL] sélection des dernières lignes avec affichage aléatoire
    Par nabmoah dans le forum PHP & Base de données
    Réponses: 1
    Dernier message: 08/08/2008, 23h57
  5. [MySQL] Sélection des dernières lignes d'une table
    Par Civet dans le forum PHP & Base de données
    Réponses: 1
    Dernier message: 25/04/2007, 15h06

Partager

Partager
  • Envoyer la discussion sur Viadeo
  • Envoyer la discussion sur Twitter
  • Envoyer la discussion sur Google
  • Envoyer la discussion sur Facebook
  • Envoyer la discussion sur Digg
  • Envoyer la discussion sur Delicious
  • Envoyer la discussion sur MySpace
  • Envoyer la discussion sur Yahoo