[ksh] - Compter le nombre d'occurence d'1 mot
Résolu
gorkimat
Messages postés
71
Statut
Membre
-
dubcek Messages postés 18627 Date d'inscription Statut Contributeur Dernière intervention -
dubcek Messages postés 18627 Date d'inscription Statut Contributeur Dernière intervention -
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" :
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,
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,
Configuration: Windows XP Firefox 3.0.4
4 réponses
-
Salut,
grep -o "<CLIENT>"
-
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 -
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 -
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