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 GNU Discussion :

Recherche une commande spécifique du grep (AIX).


Sujet :

Shell et commandes GNU

  1. #1
    Membre à l'essai
    Profil pro
    Inscrit en
    Janvier 2011
    Messages
    31
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Janvier 2011
    Messages : 31
    Points : 19
    Points
    19
    Par défaut Recherche une commande spécifique du grep (AIX).
    Bonjour,
    Tout d'abord je ne sais pas si je me trouve dans le bon forum par rapport à ma question qui concerne la commande 'grep' appelée dans un script 'ksh' qui commence ainsi :
    '#!/bin/ksh'
    Je dois retourner un résultat identique à celui ci-dessous :

    hpx16:/data/13asr2/files/data/FICH/PURGE/SQL> grep 'Compteur ' DCO506AV.log
    Compteur SAT_ALO AVANT purge = 2426331
    Compteur SAT_FEU AVANT purge = 1653952
    Compteur SAT_ALO AVANT purge = 2426331
    Compteur SAT_STU AVANT purge = 2538999
    hpx16:/data/13asr2/files/data/FICH/PURGE/SQL>
    Ce résultat correspond à la comparaison de tables Oracle 2 par 2.
    Ce que je souhaite donc obtenir, c'est :

    Compteur SAT_ALO AVANT purge = 2426331
    Compteur SAT_FEU AVANT purge = 1653952

    Compteur SAT_ALO AVANT purge = 2426331
    Compteur SAT_STU AVANT purge = 2538999
    Existe-t-il une commande dans le 'grep' permettant de spécifier des passages à la ligne (ou insertion d'une nouvelle ligne vierge) toutes les 2 lignes ?
    Avec du sed par exemple...

    Mon script est le suivant :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
    21
    22
    23
    24
    25
    26
    27
    28
    29
    30
    31
    32
    33
    34
    35
    36
     
    #----- Analyse du fichier de log genere par SQLPLUS
     
    if [ ! -f ${COMPTEURSORTIE} ];
    then
      echo "$((`/bin/date +'%H%M%S'`)) - Le fichier ${COMPTEURSORTIE} est introuvable dans le repertoire : ${REPSQLLOG}" >> ${COMPTEURERR}
    else
      #----- Code retour de SQLPLUS
      CODERETOUR=$?
      #----- Recherche des erreurs dans le fichiers de log
      TESTERR=`grep -i 'ORA-' ${FICHIERSORTIE} | wc -l`
      #----- Recherche des tags 'Compteur ' dans le fichiers de log
      TESTCPT=`grep -i 'Compteur ' ${FICHIERSORTIE} | wc -l`
     
      if [ $TESTERR -gt 0 ];
      then
        grep 'ORA-' ${FICHIERSORTIE} >> ${COMPTEURERR}
        echo "$((`/bin/date +'%H%M%S'`)) - Code retour SQLPLUS ${CODERETOUR}" >> ${COMPTEURSORTIE}
        echo "$((`/bin/date +'%H%M%S'`)) - Erreur a l'affichage des compteurs" >> ${COMPTEURERR}
        export ErrOracle=OUI
      else
        if [ $TESTCPT -gt 0 ];
        then
          cat ${FICHIERSORTIE}|grep 'Compteur ' >> ${COMPTEURSORTIE}
          echo " " >> ${COMPTEURSORTIE}
          echo "$((`/bin/date +'%H%M%S'`)) - Code retour SQLPLUS ${CODERETOUR}" >> ${COMPTEURSORTIE}
          echo "$((`/bin/date +'%H%M%S'`)) - Succes a l'affichage des compteurs" >> ${COMPTEURSORTIE}
          export ErrOracle=NON
        else
          echo "$((`/bin/date +'%H%M%S'`)) - Code retour SQLPLUS ${CODERETOUR}" >> ${COMPTEURSORTIE}
          echo "$((`/bin/date +'%H%M%S'`)) - Il n'y a pas de compteur dans le fichier de log" >> ${COMPTEURSORTIE}
          export ErrOracle=NON
        fi
      fi
    fi
    echo " " >> ${COMPTEURSORTIE}
    Merci d'avance.
    Cdlt,
    Olivier

  2. #2
    Expert éminent

    Profil pro
    Inscrit en
    Janvier 2011
    Messages
    1 946
    Détails du profil
    Informations personnelles :
    Localisation : France, Haute Garonne (Midi Pyrénées)

    Informations forums :
    Inscription : Janvier 2011
    Messages : 1 946
    Points : 6 276
    Points
    6 276
    Par défaut
    Salut,

    Avec "grep" je ne pense pas que cela soit possible, mais avec "sed" si...

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    grep 'Compteur' fichier | sed '2~2 G'
    $ man woman
    Il n'y a pas de page de manuel pour woman.

  3. #3
    Modérateur
    Avatar de N_BaH
    Profil pro
    Inscrit en
    Février 2008
    Messages
    7 553
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Février 2008
    Messages : 7 553
    Points : 19 393
    Points
    19 393
    Par défaut
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    awk '/^Compteur/{if ((FNR % 2)  == 0){print $0,"\n"} else {print $0}}'
    fi du grep !
    .
    N'oubliez pas de consulter les cours shell, la FAQ, et les pages man.

  4. #4
    Expert éminent

    Profil pro
    Inscrit en
    Janvier 2011
    Messages
    1 946
    Détails du profil
    Informations personnelles :
    Localisation : France, Haute Garonne (Midi Pyrénées)

    Informations forums :
    Inscription : Janvier 2011
    Messages : 1 946
    Points : 6 276
    Points
    6 276
    Par défaut
    A ce moment là :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    sed '/Compteur/n;G' fichier
    $ man woman
    Il n'y a pas de page de manuel pour woman.

  5. #5
    Membre à l'essai
    Profil pro
    Inscrit en
    Janvier 2011
    Messages
    31
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Janvier 2011
    Messages : 31
    Points : 19
    Points
    19
    Par défaut
    J'ai essayé et ça donne ça :

    hpx16:/data/13asr2/files/data/FICH/PURGE/SQL> grep 'Compteur ' DCO506AV.log | sed '2~2 G'
    sed: 2~2 G is not a recognized function.
    hpx16:/data/13asr2/files/data/FICH/PURGE/SQL>

  6. #6
    Expert éminent

    Profil pro
    Inscrit en
    Janvier 2011
    Messages
    1 946
    Détails du profil
    Informations personnelles :
    Localisation : France, Haute Garonne (Midi Pyrénées)

    Informations forums :
    Inscription : Janvier 2011
    Messages : 1 946
    Points : 6 276
    Points
    6 276
    Par défaut
    Quel système ?
    Quelle version de sed ?

    Essaie la solution de N_BaH ou ma 2nd proposition...
    $ man woman
    Il n'y a pas de page de manuel pour woman.

  7. #7
    Membre averti
    Homme Profil pro
    Gérant infopsylon
    Inscrit en
    Juin 2010
    Messages
    215
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 43
    Localisation : France

    Informations professionnelles :
    Activité : Gérant infopsylon
    Secteur : Industrie

    Informations forums :
    Inscription : Juin 2010
    Messages : 215
    Points : 328
    Points
    328
    Par défaut
    Bonjour,

    Si la solution de zipe31 ne fonctionne pas c'est que tu ne dispose pas d'un GNU Sed.

    Essais avec ça:

    Lilian.

  8. #8
    Membre à l'essai
    Profil pro
    Inscrit en
    Janvier 2011
    Messages
    31
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Janvier 2011
    Messages : 31
    Points : 19
    Points
    19
    Par défaut
    J'ai également essayé la commande :

    grep 'Compteur' DCO506AV.log | sed '/Compteur/n;G'
    et ça me renvoie ce que je veux :

    hpx16:/data/13asr2/files/data/FICH/PURGE/SQL> grep 'Compteur' DCO506AV.log | sed '/Compteur/n;G'
    Compteur SAT_ALO AVANT purge = 2426331
    Compteur SAT_FEU AVANT purge = 1653952

    Compteur SAT_ALO AVANT purge = 2426331
    Compteur SAT_STU AVANT purge = 2538999

    Compteur SAT_FEUSTU AVANT purge = 1653951
    Compteur SAT_FEU AVANT purge = 1653952

    Compteur SAT_FEU AVANT purge = 1653952
    Compteur SIG_RECO05 AVANT purge = 1653952

    Compteur SAT_STU AVANT purge = 2538999
    Compteur SIG_RECO07 AVANT purge = 2539000

    Compteur SAT_ATT AVANT purge = 1590520
    Compteur SIG_RECO50 AVANT purge = 1590520

    Compteur SAT_DEP AVANT purge = 858681
    Compteur SIG_RECO06 AVANT purge = 858681

    Compteur SAT_TOP AVANT purge = 5732
    Compteur SIG_RECO115 AVANT purge = 5732

    Compteur SAT_NUMNRS AVANT purge = 36129
    Compteur SIG_RECO204 AVANT purge = 308830

    Compteur SAT_SCL AVANT purge = 17847
    Compteur SIG_RECO43 AVANT purge = 17847

    hpx16:/data/13asr2/files/data/FICH/PURGE/SQL>
    Merci les gars pour toutes les idées et conseils.

    Bonne soirée.
    Cdlt,
    Olivier

  9. #9
    Membre averti
    Homme Profil pro
    Gérant infopsylon
    Inscrit en
    Juin 2010
    Messages
    215
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 43
    Localisation : France

    Informations professionnelles :
    Activité : Gérant infopsylon
    Secteur : Industrie

    Informations forums :
    Inscription : Juin 2010
    Messages : 215
    Points : 328
    Points
    328
    Par défaut
    Pardon, il y a un 'n;' en trop... désolé


  10. #10
    Membre à l'essai
    Profil pro
    Inscrit en
    Janvier 2011
    Messages
    31
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Janvier 2011
    Messages : 31
    Points : 19
    Points
    19
    Par défaut
    Ouh la la, pour les questions sur le système et la version de sed, alors là je n'y connais strictement rien.
    C'est du charabia.
    Je ne saurai répondre.
    Cdlt,
    Olivier

  11. #11
    Expert éminent

    Profil pro
    Inscrit en
    Janvier 2011
    Messages
    1 946
    Détails du profil
    Informations personnelles :
    Localisation : France, Haute Garonne (Midi Pyrénées)

    Informations forums :
    Inscription : Janvier 2011
    Messages : 1 946
    Points : 6 276
    Points
    6 276
    Par défaut
    A partir du moment où la 2nd syntaxe marche, ça devient subsidiaire du coup
    $ man woman
    Il n'y a pas de page de manuel pour woman.

  12. #12
    Membre à l'essai
    Profil pro
    Inscrit en
    Janvier 2011
    Messages
    31
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Janvier 2011
    Messages : 31
    Points : 19
    Points
    19
    Par défaut
    Oui c'est sûr.

  13. #13
    Membre averti
    Homme Profil pro
    Gérant infopsylon
    Inscrit en
    Juin 2010
    Messages
    215
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 43
    Localisation : France

    Informations professionnelles :
    Activité : Gérant infopsylon
    Secteur : Industrie

    Informations forums :
    Inscription : Juin 2010
    Messages : 215
    Points : 328
    Points
    328
    Par défaut
    Bonjour,

    Tu peux au moins nous dire sur quel système d'exploitation tu es ?

    Lilian.

  14. #14
    Membre à l'essai
    Profil pro
    Inscrit en
    Janvier 2011
    Messages
    31
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Janvier 2011
    Messages : 31
    Points : 19
    Points
    19
    Par défaut
    Je travaille sur Microsoft Windows XP Professionnel Version 2002 Service Pack 2, et pour accéder aux consoles Unix, je passe par Putty en SSH.
    Voilà je ne sais pas si cela répond à vos questions.
    Cdlt,
    Olivier

  15. #15
    Rédacteur

    Avatar de ok.Idriss
    Homme Profil pro
    IS Consultant
    Inscrit en
    Février 2009
    Messages
    5 220
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 33
    Localisation : France, Paris (Île de France)

    Informations professionnelles :
    Activité : IS Consultant
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Février 2009
    Messages : 5 220
    Points : 19 452
    Points
    19 452
    Par défaut
    Bonjour.

    Citation Envoyé par Reivilo35 Voir le message
    Je travaille sur Microsoft Windows XP Professionnel Version 2002 Service Pack 2, et pour accéder aux consoles Unix, je passe par Putty en SSH.
    Voilà je ne sais pas si cela répond à vos questions.
    Ce qui l'aurai intéressé ce sont les versions de tes OS sur lesquels tu te connecte en SSH. À priori ce sont des Unix (on s'en doutait un peu), donc ta version de sed est une version POSIX et non GNU. Il sera toutefois toujours intéressant que tu nous indique les versions de tes Unix pour plus de précisions et plus de facilité dans les futures recherches ...

    AIX ? HP-UX ? Solaris ? OpenBSD ? etc

    Cordialement,
    Idriss

  16. #16
    Membre à l'essai
    Profil pro
    Inscrit en
    Janvier 2011
    Messages
    31
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Janvier 2011
    Messages : 31
    Points : 19
    Points
    19
    Par défaut
    Machine AIX.

  17. #17
    Rédacteur

    Avatar de ok.Idriss
    Homme Profil pro
    IS Consultant
    Inscrit en
    Février 2009
    Messages
    5 220
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 33
    Localisation : France, Paris (Île de France)

    Informations professionnelles :
    Activité : IS Consultant
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Février 2009
    Messages : 5 220
    Points : 19 452
    Points
    19 452
    Par défaut
    Merci à toi

+ Répondre à la discussion
Cette discussion est résolue.

Discussions similaires

  1. Rechercher une balise XML avec grep
    Par sonia5 dans le forum Shell et commandes GNU
    Réponses: 11
    Dernier message: 12/02/2015, 20h12
  2. Réponses: 2
    Dernier message: 15/01/2008, 16h40
  3. [Débutante] Recherche d'une commande
    Par diana82 dans le forum Images
    Réponses: 5
    Dernier message: 24/10/2007, 19h13
  4. [DOS] Je recherche une commande dos pour graver
    Par tomblaireau dans le forum Scripts/Batch
    Réponses: 4
    Dernier message: 01/04/2007, 09h25
  5. recherche d'une commande
    Par vasilov dans le forum Autres Logiciels
    Réponses: 1
    Dernier message: 03/11/2005, 22h40

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