Partage
  • Partager sur Facebook
  • Partager sur Twitter

Manipulation d'une chaine de caractères

modifier un caractère en particulier

    31 octobre 2014 à 21:12:20

    Bonjour,

    J'ai une chaine de caractère composé d'une récurrence d'un élément stocké dans une variable et je cherche à pouvoir traiter les caractères indépendamment les un des autres mais aucune idée comment faire.

    exemple :

    tab="_ _ _ _ _ _ _"

    J'ai donc ma variable et j'aimerai par une commande pouvoir éditer juste le 3éme _ pour le changer en un autre caractère et par la suite pouvoir modifier la même chaine de caractère en changeant un autre _ sans que ça n'efface les modifications précédentes. 

    J'ai cherché du coté de sed mais pas trouvé comment pouvoir modifier le niéme caractère/mot, peut-être en le couplant avec une autre commande comme grep via un | mais du coup comment reappliquer la modification à ma variable ?

    Voilà, en espérant que l'un de vous puisse m'aider, merci d'avance :)

    • Partager sur Facebook
    • Partager sur Twitter
      31 octobre 2014 à 22:45:33

      Salut,

      Petit solution avec cut :

      $ VAR1="coucou"
      $ echo $VAR1 | cut -c1
      c


      Cela te permets déjà d'affiché le caractères

      Après tu peux jouer avec une fonction (C'est moche ce que j'ai fait) :

      function chchar()
      {
              mot=$1
              n=$2
              ch=$3
              sortie=""
               for i in $(seq 1 ${#mot})
               do
                      if [ $i -eq $n ]
                      then
                              sortie=$sortie$ch
                      else
                              sortie=$sortie$(echo $mot | cut -c$i)
                      fi
              done
              echo $sortie
      }
      

      fonction a utilisé avec 3 paramètres :

      1er : string en entrée

      2nd : N° du char a modifier

      3eme : char a ajouté

      Par exemple :

      chchar "coucou" 1 t

      donne

      toucou

      En espérant t'aider

      • Partager sur Facebook
      • Partager sur Twitter
      S'il n'y a pas de solution, c'est qu'il n'y a pas de problème
        31 octobre 2014 à 23:28:32

        ça m'a l'air un peu plus compliqué que ce que l'on m'avait raconté (on m'avait dit que c'était faisable avec 1 commande) mais vu que ça me donne le résultat cherché ça va tout de même me permettre de continuer mon projet. 

        Merci à toi, je laisse le sujet ouvert dans le cas où si quelqu'un d'autre à une autre idée.

        (Sinon on m'avait parlé d'assesseur je crois)

        • Partager sur Facebook
        • Partager sur Twitter
          31 octobre 2014 à 23:41:38

          Y'a certainement plus simple, mais n'ayant jamais eu besoin de ceci, c'est la solution qui m'est venu.

          Mais je viens de trouver ça, j'ai pas tous lu, mais tu pourrais y trouver ton bonheur :

          http://tldp.org/LDP/abs/html/string-manipulation.html

          • Partager sur Facebook
          • Partager sur Twitter
          S'il n'y a pas de solution, c'est qu'il n'y a pas de problème
            31 octobre 2014 à 23:50:47

            Ah ah, oui en cherchant aujourd'hui j'étais tombé sur ça : http://abs.traduc.org/abs-5.0-fr/ch09s02.html ^^"

            -
            Edité par Benguichard 31 octobre 2014 à 23:51:24

            • Partager sur Facebook
            • Partager sur Twitter

            Manipulation d'une chaine de caractères

            × Après avoir cliqué sur "Répondre" vous serez invité à vous connecter pour que votre message soit publié.
            × Attention, ce sujet est très ancien. Le déterrer n'est pas forcément approprié. Nous te conseillons de créer un nouveau sujet pour poser ta question.
            • Editeur
            • Markdown