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
    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 ;-))
    1. 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é ^^'
    2. 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/"
        ;-))
    3. 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. Modérateur
        Re-
        var=222yy; sed "/ma_variable/ s/=[^ ]*/=$var/"
        ;-))
        1. super merci infiniment ça change toutes les variables que je veux :)
          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. 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$
              ;-))

              Discussions similaires

              question pix mot caché

              7 réponses