Recherche de chaine de caracteres

Résolu
BBQ -  
 BBQ -
Bonjour,

J'ai un fichier ascii contient multiples lignes , dont entre autre :

Thu Apr 23 22:00:40 2009 ( sur une ligne )
ORA-00060: Deadlock detected ( sur la ligne suivante )

je voudrais :

1° selectionner seulement c'est deux lignes et les ecrire dans un autre fichier, sachant que la chaine ORA
est tj la même , et que la chaine "date" varie.
2° compter le nombre d'occurence de la chaine ORA.

Merci a tous de votre aide.

P.S : sous Aix en Ksh
Configuration: Windows XP
Firefox 3.5.2

8 réponses

  1. dubcek Messages postés 18627 Date d'inscription   Statut Contributeur Dernière intervention   5 660
     
    comme ça :
    $ cat a1
    aaaaaaaaaaaa
    bbbbbbbbbbbb
    Wed Sep 23 22:00:40 2009 
    ORA-00060: Deadlock detected 
    
    aaaaaaaaaaaa
    bbbbbbbbbbbb
    Wed Sep 23 22:00:40 2009 
    ORA-00060: Deadlock detected 
    
    aaaaaaaaaaaa
    bbbbbbbbbbbb
    Sun Apr 23 22:00:40 2009 
    ORA-00060: Deadlock detected 
    $ 
    $ DATE=$(date '+%a %h %d')
    $ awk '$1 !~ /^ORA/ {n=$0} ; /^ORA/ {if (n ~ /^'"$DATE"'/){print n "\n" $0;c+=1}} ; END {print c, "occurences"}' < a1  
    Wed Sep 23 22:00:40 2009 
    ORA-00060: Deadlock detected 
    Wed Sep 23 22:00:40 2009 
    ORA-00060: Deadlock detected 
    2 occurences
    $ 
    
    1
  2. dubcek Messages postés 18627 Date d'inscription   Statut Contributeur Dernière intervention   5 660
     
    Pour être puriste et respecter le singulier ou pluriel d'occurence :-)
    END {c>1?s="s":s="";print c, "occurence" s}'
    1
  3. mel21lio Messages postés 304 Statut Membre 25
     
    pour le nombre d'ocurence
    cat toto.txt | grep ORA | wc -l

    pour le restte il va falloir passer par du perl du awk ou du bash
    0
  4. BBQ
     
    Merci pour le nombre d'occurence , en fait je savais pour la commande wc -l
    mais je suis surtout preneur pour la question n°1

    Une idée de syntaxe ?

    Merci pour vos réponses
    0
  5. Vous n’avez pas trouvé la réponse que vous recherchez ?

    Posez votre question
  6. dubcek Messages postés 18627 Date d'inscription   Statut Contributeur Dernière intervention   5 660
     
    hello
    $ cat a1
    aaaaaaaaaaaa
    bbbbbbbbbbbb
    Thu Apr 23 22:00:40 2009 
    ORA-00060: Deadlock detected 
    
    aaaaaaaaaaaa
    bbbbbbbbbbbb
    Mon Apr 23 22:00:40 2009 
    ORA-00060: Deadlock detected 
    
    aaaaaaaaaaaa
    bbbbbbbbbbbb
    Sun Apr 23 22:00:40 2009 
    ORA-00060: Deadlock detected 
    $ 
    $ awk '$1 !~ /^ORA/ {n=$0} ; /^ORA/ {c+=1;print n "\n" $0} ; END {print c, "occurences"}' < a1  
    Thu Apr 23 22:00:40 2009 
    ORA-00060: Deadlock detected 
    Mon Apr 23 22:00:40 2009 
    ORA-00060: Deadlock detected 
    Sun Apr 23 22:00:40 2009 
    ORA-00060: Deadlock detected 
    3 occurences
    $ 
    
    0
  7. BBQ
     
    Merci beaucoup pour votre réponse qui fonctionne parfaitement .

    mais si je peux encore vous solliciter .

    j'aimerais rentrer en argument pour faire le tri ,seulement la date du jour = > ddj=`date '+%a %h %d'`

    comment l'insérer dans la commande awk .

    Cordialement
    0
  8. BBQ
     
    Merci beaucoup de votre réponse

    Cela correspond tout a fit a ma demande

    Bonne journée.
    0
  9. BBQ
     
    Merci beaucoup pour cette précision syntaxique .
    0