Recherche de chaine de caracteres
Résolu
BBQ
-
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
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
A voir également:
- Recherche de chaine de caracteres
- Recherche automatique des chaînes ne fonctionne pas - Guide
- Caractères spéciaux - Guide
- Ascii nombre de caractères - Guide
- Probleme recherche chaine tv tcl - Forum TV & Vidéo
- Chaine tnt gratuite sur mobile - Guide
8 réponses
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
$
Pour être puriste et respecter le singulier ou pluriel d'occurence :-)
END {c>1?s="s":s="";print c, "occurence" s}'
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
cat toto.txt | grep ORA | wc -l
pour le restte il va falloir passer par du perl du awk ou du bash
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
mais je suis surtout preneur pour la question n°1
Une idée de syntaxe ?
Merci pour vos réponses
Vous n’avez pas trouvé la réponse que vous recherchez ?
Posez votre question
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
$