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

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Membre averti
    Profil pro
    Inscrit en
    Janvier 2011
    Messages
    31
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Janvier 2011
    Messages : 31
    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 confirmé

    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
    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'

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

    Informations forums :
    Inscription : Février 2008
    Messages : 7 659
    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 confirmé

    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
    Par défaut
    A ce moment là :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    sed '/Compteur/n;G' fichier

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

    Informations forums :
    Inscription : Janvier 2011
    Messages : 31
    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 confirmé

    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
    Par défaut
    Quel système ?
    Quelle version de sed ?

    Essaie la solution de N_BaH ou ma 2nd proposition...

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

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

    Informations forums :
    Inscription : Juin 2010
    Messages : 215
    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 expérimenté
    Homme Profil pro
    Gérant infopsylon
    Inscrit en
    Juin 2010
    Messages
    215
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 45
    Localisation : France

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

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


  9. #9
    Membre averti
    Profil pro
    Inscrit en
    Janvier 2011
    Messages
    31
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Janvier 2011
    Messages : 31
    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

+ 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