Forum Linux.débutant chiffre en lettre

Posté par  .
Étiquettes : aucune
0
16
nov.
2008
Bonjour à tous, je voulais juste savoir si il existait une méthode tout faite pour effectuer la transformation d'un chiffre en toute lettre?

merci
  • # toutes lettres

    Posté par  (site web personnel) . Évalué à 2.

    par toutes lettres tu entends decomposer l'entier en ces decimales sous forme de caracteres ascii ou bien en français ?
    parce que autant pour la premiere methode c'est simple, la seconde va demendre des aleas de la langue et donc sera nettement moins triviale (mais largement accessible a realiser pourtant)
    • [^] # Re: toutes lettres

      Posté par  (site web personnel) . Évalué à 3.

      pour un chiffre, un tableau tout bête peut suffire (les chiffres étant invariables, même pas besoin de gérer le pluriel).
      pour un nombre en revanche, bonjour les accords ;-)
  • # sèdétonhnami

    Posté par  . Évalué à 4.

    # echo '0 2 54 fg1t 564.9' | sed -n '/0/ {s/0/zero/}; /1/ {s/1/un/}; /2/ {s/2/deux/}; /3/ {s/3/trois/}; /4/ {s/4/quatre/}; /5/ {s/5/cinq/}; /6/ {s/6/six/}; /7/ {s/7/sept/}; /8/ {s/8/huit/}; /9/ {s/9/neuf/}; p'
    zero deux cinqquatre fgunt 5six4.neuf


    Ca me fait penser à une question entendue dans je ne sais quel jeu télévisé: quel est le chiffre inscrit sur le maillot de tel joueur de foot ? Le candidat répond à toute vitesse 1 2 3 4 5 6 7 8 9. Nan nan la réponse était 11 :-)
    • [^] # Re: Sed&Awksontézamis

      Posté par  (site web personnel) . Évalué à 1.

      Kerro :

      # echo '0 2 54 fg1t 564.9' | sed -n '/0/ {s/0/zero/}; /1/ {s/1/un/}; /2/ {s/2/deux/}; /3/ {s/3/trois/}; /4/ {s/4/quatre/}; /5/ {s/5/cinq/}; /6/ {s/6/six/}; /7/ {s/7/sept/}; /8/ {s/8/huit/}; /9/ {s/9/neuf/}; p'
      zero deux cinqquatre fgunt 5six4.neuf



      S'amuser en root, c'est Mal(C)...

      $ echo '0 2 54 fg1t 564.9' | sed -e '
      /0/ s//zero/g
      /1/ s//un/g
      /2/ s//deux/g
      /3/ s//trois/g
      /4/ s//quatre/g
      /5/ s//cinq/g
      /6/ s//six/g
      /7/ s//sept/g
      /8/ s//huit/g
      /9/ s//neuf/g
      '
      zero deux cinqquatre fgunt cinqsixquatre.neuf


      et avec Awk :

      awk '
      BEGIN{
        split("un deux trois quatre cinq six sept huit neuf",L);
        L[0]="zéro";
      }
      /[0-9]/{
        for(n=0;n<10;n++){gsub(n,L[n])}
        print;
      }'



      Ca me fait penser à une question entendue dans je ne sais quel jeu télévisé: quel est le chiffre inscrit sur le maillot de tel
      joueur de foot ? Le candidat répond à toute vitesse 1 2 3 4 5 6 7 8 9. Nan nan la réponse était 11 :-)

      Ben, dans l'équipe B, ils ont des numéros hexadécimaux ?

      OK, -->[]
      • [^] # Re: Sed&Awksontézamis

        Posté par  . Évalué à 2.

        S'amuser en root, c'est Mal(C)
        Nan, ce qui est mal c'est d'ajouter à la mimine un dièse au lieu d'un dollar.

        Oui sinon, hum, j'ai oublié les 'g'.

        J'aime beaucoup avec awk. Un jour peut-être, je lirais la doc :-)
        Ma question à deux balles: tu utilises awk "en vrai" ou c'est juste pour le plaisir de l'exemple ?
        • [^] # Re: Sed&Awksontézamis

          Posté par  (site web personnel) . Évalué à 2.


          J'aime beaucoup avec awk. Un jour peut-être, je lirais la doc :-)

          Elle est tout de même plus longue que celle de Sed :)


          Ma question à deux balles: tu utilises awk "en vrai" ou c'est juste pour le plaisir de l'exemple ?

          Oui, je l'utilise --- Awk est parfois très concis, par exemple iptables -nvL | awk '$1'
          ou un uniq sans tri : awk '!n[$0]++'. Il permet aussi d'éviter de piper plusieurs grep.

Suivre le flux des commentaires

Note : les commentaires appartiennent à celles et ceux qui les ont postés. Nous n’en sommes pas responsables.