[ksh] - Compter le nombre d'occurence d'1 mot

Résolu/Fermé
gorkimat Messages postés 70 Date d'inscription dimanche 1 avril 2007 Statut Membre Dernière intervention 1 mars 2012 - 24 juil. 2009 à 11:56
dubcek Messages postés 18755 Date d'inscription lundi 15 janvier 2007 Statut Contributeur Dernière intervention 14 novembre 2024 - 24 juil. 2009 à 16:15
Bonjour,

Je bloque sur un problème qui semble assez simple, et j'aurais besoin de votre aide.

En fait, il faudrait que je compte le nombre d'occurence d'un mot dans un fichier XML, sachant que le mot peut-être présent plusieurs fois sur une ligne.

Exemple :
<CLIENT></CLIENT><CLIENT></CLIENT>
<CLIENT></CLIENT>

<CLIENT> présent 3 fois.

J'ai fait une ligne pas très propre qui à l'air de fonctionner, mais avez-vous une idée "plus simple" :

cat test.xml | tr '>' '\n' | grep "<CLIENT" | wc -l


On peux aussi le faire en perl, mais si possible sur une seule ligne dans un script shell.

Merci à tous pour voter aide, et en espérant avoir été clair.

Cdlt,
A voir également:

4 réponses

jipicy Messages postés 40842 Date d'inscription jeudi 28 août 2003 Statut Modérateur Dernière intervention 10 août 2020 4 897
24 juil. 2009 à 12:00
Salut,
grep -o "<CLIENT>"
0
gorkimat Messages postés 70 Date d'inscription dimanche 1 avril 2007 Statut Membre Dernière intervention 1 mars 2012 9
24 juil. 2009 à 12:09
Bonjour jipicy,

J'avais trouvé cette solution, mais le problème, c'est que le grep dont je dispose n'a pas l'option [-o] :-(

Merci beaucoup pour ton aide
0
jipicy Messages postés 40842 Date d'inscription jeudi 28 août 2003 Statut Modérateur Dernière intervention 10 août 2020 4 897
24 juil. 2009 à 13:16
Quelle version tu as ?
0
gorkimat Messages postés 70 Date d'inscription dimanche 1 avril 2007 Statut Membre Dernière intervention 1 mars 2012 9 > jipicy Messages postés 40842 Date d'inscription jeudi 28 août 2003 Statut Modérateur Dernière intervention 10 août 2020
24 juil. 2009 à 14:22
C'est la version 1.2 je pense (mais pas sûr). Je suis sur Sun OS 5.10 ...
0
jipicy Messages postés 40842 Date d'inscription jeudi 28 août 2003 Statut Modérateur Dernière intervention 10 août 2020 4 897 > gorkimat Messages postés 70 Date d'inscription dimanche 1 avril 2007 Statut Membre Dernière intervention 1 mars 2012
24 juil. 2009 à 14:27
Arf ;-((

Donc à part ta moulinette ou celle de dubcek ci-dessous avec "awk", pas d'autres solutions ;-(
0
gorkimat Messages postés 70 Date d'inscription dimanche 1 avril 2007 Statut Membre Dernière intervention 1 mars 2012 9 > jipicy Messages postés 40842 Date d'inscription jeudi 28 août 2003 Statut Modérateur Dernière intervention 10 août 2020
24 juil. 2009 à 14:29
Ok ...

Merci beaucoup pour ton aide.

A bientôt
0
dubcek Messages postés 18755 Date d'inscription lundi 15 janvier 2007 Statut Contributeur Dernière intervention 14 novembre 2024 5 621
24 juil. 2009 à 13:22
hello
une méthode, on compte le nombre de substitutions
$ cat a1
<CLIENT></CLIENT><CLIENT></CLIENT>
<CLIENT></CLIENT>

$ awk -v v="<CLIENT>" '{x+=gsub(v, "")} ; END {print x}'< a1
3
0
gorkimat Messages postés 70 Date d'inscription dimanche 1 avril 2007 Statut Membre Dernière intervention 1 mars 2012 9
24 juil. 2009 à 14:24
Bonjour dubcek,

Merci beaucoup pour l'idée, elle me plait bien, mais j'ai un message d'erreur lorsque je lance la commande :

~/mathieu/test> awk -v v="<CLIENT>" '{x=x+gsub(v, "")} ; END {print x}'< test.xml
awk: syntax error near line 1
awk: bailing out near line 1


Merci
0
dubcek Messages postés 18755 Date d'inscription lundi 15 janvier 2007 Statut Contributeur Dernière intervention 14 novembre 2024 5 621
24 juil. 2009 à 14:56
si Solaris ne connait pas grep -o, il ne connait pas non plus awk -v sauf avec nawk ou /usr/xpg4/bin/awk
essaye
awk '{x+=gsub(v, "")} ; END {print x}' v="<CLIENT>"
peut-être qu'il ne connait pas gsub, utilise alors nawk
0
gorkimat Messages postés 70 Date d'inscription dimanche 1 avril 2007 Statut Membre Dernière intervention 1 mars 2012 9
24 juil. 2009 à 15:54
Super avec /usr/xpg4/bin/awk cela fonctionne.

Merci à tous les deux pour votre aide.
0
dubcek Messages postés 18755 Date d'inscription lundi 15 janvier 2007 Statut Contributeur Dernière intervention 14 novembre 2024 5 621 > gorkimat Messages postés 70 Date d'inscription dimanche 1 avril 2007 Statut Membre Dernière intervention 1 mars 2012
24 juil. 2009 à 16:15
Sur Solaris, je te conseille d'utiliser plutôt nawk (new awk) si jamais
0