Recherche de chaine de caracteres

Résolu/Fermé
BBQ - 23 sept. 2009 à 08:58
 BBQ - 24 sept. 2009 à 13:03
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

8 réponses

dubcek Messages postés 18718 Date d'inscription lundi 15 janvier 2007 Statut Contributeur Dernière intervention 22 mars 2024 5 615
23 sept. 2009 à 14:52
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
dubcek Messages postés 18718 Date d'inscription lundi 15 janvier 2007 Statut Contributeur Dernière intervention 22 mars 2024 5 615
24 sept. 2009 à 10:15
Pour être puriste et respecter le singulier ou pluriel d'occurence :-)
END {c>1?s="s":s="";print c, "occurence" s}'
1
mel21lio Messages postés 275 Date d'inscription mardi 14 juillet 2009 Statut Membre Dernière intervention 21 octobre 2009 25
23 sept. 2009 à 09:26
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
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

Vous n’avez pas trouvé la réponse que vous recherchez ?

Posez votre question
dubcek Messages postés 18718 Date d'inscription lundi 15 janvier 2007 Statut Contributeur Dernière intervention 22 mars 2024 5 615
23 sept. 2009 à 10:01
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
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
Merci beaucoup de votre réponse

Cela correspond tout a fit a ma demande

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