Modification variable dans un fichier

Résolu
Bonjour,

j'ai essayé des trucs qui se trouvent déjà sur le forum pour essayer de réousdre mon problème mais ça ne marche pas.

voilà dans un fichier ksh je définis par exemple une variable que je vais exporter comme ceci :

export ma_variable=1 #ma variable

ensuite, via une commande je veux pouvoir changer juste la valeur de ma variable.

j'ai essayé : var=23; sed "/ma_variable/ s/[ [:digit:] ]/$var/" fichier.ksh > fich.tmp && mv -f fich.tmp fichier.ksh

mais avec ça ensuite le contenu de mon fichier donne ceci :

export23 mavariable=1 #ma variable

ce qui n'est pas ce que je veux :'(

si quelqu'un peut m'aider ce serait sympa merci !
Configuration: Windows XP
Internet Explorer 6.0

9 réponses

  1. Modérateur
    Re-
    jp@MDK:~/tmpfs ssh$ cat fichier.txt
    #ABC
    #DEF
    IJK
    LMN
    #GHI # blabla
    #OPQ
    
    jp@MDK:~/tmpfs ssh$ sed '/GHI/ s/#//' fichier.txt
    #ABC
    #DEF
    IJK
    LMN
    GHI # blabla
    #OPQ
    
    jp@MDK:~/tmpfs ssh$
    ;-))
    1. Re,

      j'ai un petit souci qui est le suivant :

      j'ai des lignes en commentaire de ce genre dans fichier.ini

      #ABC
      #DEF
      IJK
      LMN
      #OPQ

      je fais un script pour ajouter ou supprimer un commentaire, cela donne ça :

      read paramc?"Voulez-vous ajouter ou enlever une société en commentaire ? (a/e)"
      if [[ ${paramc} != [eE] ]] ; then
      read soc?"Quelle société voulez-vous mettre en commentaire ? "
      sed "/${soc}/ s/^/#/" fichier.ini > fich.tmp && mv -f fich.tmp fichier.ini
      echo "La société ${soc} ne sera pas traitée."
      read paramb?"Voulez-vous commenter une autre société ? (o/n)"
      else
      read soc?"Quelle société voulez-vous enlever le commentaire ? "

      echo "La société ${soc} sera traitée."
      read paramb?"Voulez-vous traiter une autre société ? (o/n)"
      fi

      voilà la commande sed pour ajouter un commentaire marche bien mais je trouve pas celle pour enlever le #...
      1. super merci infiniment ça change toutes les variables que je veux :)
        1. Modérateur
          Re-
          var=222yy; sed "/ma_variable/ s/=[^ ]*/=$var/"
          ;-))
          1. Merci encore... mais j'ai une nouvelle forme de variable qui est

            export ma_variable=111xx

            avec 111 qui peuvent être des chiffres et xx des lettres minuscules, c'est pour désigner la version d'une application.

            donc j'aimerais pourvoir via une commande changer la version et avoir par exemple

            export ma_variable=222yy

            ce serait possible ?

            j'ai bidouillé et pour reconnaître les chiffres je mets trois :digit: à la suite même si c'est pas très propre, mais pour les lettres je trouve pas comment faire...
            1. j'ai toujours un petit problème...

              j'ai dans le fichier ksh :

              export ma_variable=10 #ma variable

              je fais

              sed "/ma_variable/ s/:digit:/${var}/" fichier.ksh > fich.tmp && mv -f fich.tmp fichier.ksh

              j'obtiens alors

              export ma_variable=230 #ma variable

              comment faire pour que le zéro soit aussi supprimé lors de la commande ?
              1. Modérateur
                sed "/ma_variable/ s/[0-9]\+/$var/"
                ;-))
            2. j'ai essayé

              sed "/ma_variable/ s/:digit:/$var/" fichier.ksh > fich.tmp && mv -f fich.tmp fichier.ksh

              la date de modification du fichier change mais la ligne reste identique..., j'ai toujours :

              export ma_variable=1 #ma variable

              :(
              1. oups désolé j'avais pas compris ta réponse, merci beaucoup c'est réglé ^^'
            3. Modérateur
              Salut,

              Dans l'exemple que je t'avais donné, j'avais bien stipulé de ne pas mettre d'espace entre les crochets
              "[ [:digit:] ]" !!!

              C'est à cause de l'interprétation qui est faite des doubles crochets par la syntaxe du forum de CCM qu'on est obligé de mettre des espaces sans quoi c'est interprété et affiché comme suit :
              sed "/ma_variable/ s/:digit:/$var/" fichier.ksh
              Donc supprime les espaces et ça devrait rouler ;-))

              Discussions similaires

              question pix mot caché

              7 réponses