Question commande Unix ( Résolue )

Question commande Unix ( Résolue ) - Codes et scripts - Linux et OS Alternatifs

Marsh Posté le 27-04-2005 à 10:08:02    

Bonjour,
 
J’aurais besoin d’une commande me permettant de compter le nombre de fois qu’un caractère apparaît dans une variable.
 
Les commandes que je connais ( « grep » et « wc » ) ne me fournissent qu’un nombre de lignes.
 
Merci d'avance


Message édité par claudic le 28-04-2005 à 16:06:28

---------------
--------------------------------------------
Reply

Marsh Posté le 27-04-2005 à 10:08:02   

Reply

Marsh Posté le 27-04-2005 à 10:22:38    

c'est en première page http://rulzofpunk.free.fr/smileys/batte_fou.gif
 
tu te fous pas un peu du monde ?


---------------
uptime is for lousy system administrators what Viagra is for impotent people - mes unixeries - github me
Reply

Marsh Posté le 27-04-2005 à 10:36:54    

black_lord a écrit :

c'est en première page http://rulzofpunk.free.fr/smileys/batte_fou.gif
 
tu te fous pas un peu du monde ?


 
Il faut apprendre à lire avant de faire des remarques.
 
Sur la première page on trouve compter le nombre de caractère dans une variable.
 
Dans mon cas, je cherche le nombre de fois qu'apparait un caractère dans une variable.
 
Je pense qu'il y a une nuance.


---------------
--------------------------------------------
Reply

Marsh Posté le 27-04-2005 à 10:40:55    

oops [:slackerbitch]
 
toutes mes excuses :jap:


---------------
uptime is for lousy system administrators what Viagra is for impotent people - mes unixeries - github me
Reply

Marsh Posté le 27-04-2005 à 10:53:49    

black_lord a écrit :

oops [:slackerbitch]
 
toutes mes excuses :jap:


 
Ya pas de mal, mais là, je pète un plomb.
Je pensais que c'était simple.  :cry:  
 


---------------
--------------------------------------------
Reply

Marsh Posté le 27-04-2005 à 11:34:32    

Pas difficile avec un ptit programme en C, allez j'te fais ça:

Code :
  1. #include <stdio.h>
  2. #include <string.h>
  3. int main(int argc, char **argv)
  4. {
  5. int  nCount = 0;
  6. int  nStrPos = 0;
  7. if (argc != 3)
  8. {
  9.  fprintf(stderr, "Usage: %s [string] [char]\n", argv[0]);
  10.  return (-1);
  11. }
  12. while (nStrPos < strlen(argv[1]))
  13. {
  14.  if (argv[1][nStrPos++] == argv[2][0])
  15.   nCount++;
  16. }
  17. printf("%i\n", nCount);
  18. return (0);
  19. }


 
Tu le compile avec :

Code :
  1. $ gcc -o count_char ./nom_source.c


Puis tu le lance comme ça:

Code :
  1. $ count_char $VARIABLE a


Pour compter le nombre de a.


Message édité par deather2 le 27-04-2005 à 11:34:52
Reply

Marsh Posté le 27-04-2005 à 11:37:31    

+1 apparemment en shell y'a pas moyen 'proprement'


---------------
uptime is for lousy system administrators what Viagra is for impotent people - mes unixeries - github me
Reply

Marsh Posté le 27-04-2005 à 11:50:47    

OK, je vous remercie.
 
J'aime beaucoup le code.
 
Je voulais surtout éviter de le coder en C car c'est un script pour le serveur de production.
Je ne suis pas certain que la prod acceptera.
 
Merci encore, et bonne journée.
Si on me fourni une solution plus propre ( demande effectué à nos spécialistes Unix ), je la mettrai en ligne.


---------------
--------------------------------------------
Reply

Marsh Posté le 27-04-2005 à 12:15:48    

Avec perl :

Code :
  1. echo "aabababaaua" | perl -ne 'print s/a//g'


 
En script bash pur :

Code :
  1. toto=abdferahjeak
  2. echo $((${#toto}-${#toto//a}))


Reply

Marsh Posté le 28-04-2005 à 14:29:52    

Voici la solution que je recherchais.
Merci encore pour votre aide.
 
Dans cet exemple, le résultat est le nombre de fois qu'apparait le ";".
A='ddsC;dd;ee;Xv;oui'
A=${A//[!;]}
echo ${#A}
 
Merci encore.
 
PS : Comment fais ton pour modifier le titre ?
Je voudrais ajouter que la solution est trouvée.


Message édité par claudic le 28-04-2005 à 14:33:36

---------------
--------------------------------------------
Reply

Marsh Posté le 28-04-2005 à 14:29:52   

Reply

Marsh Posté le 28-04-2005 à 14:49:48    

clic sur l'icone d'édition du premier post

Reply

Sujets relatifs:

Leave a Replay

Make sure you enter the(*)required information where indicate.HTML code is not allowed