Modification variable dans un fichier

[Résolu/Fermé]
Signaler
-
 Harry974 -
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 !

9 réponses

Messages postés
40805
Date d'inscription
jeudi 28 août 2003
Statut
Modérateur
Dernière intervention
10 août 2020
4 872
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 ;-))
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

:(
oups désolé j'avais pas compris ta réponse, merci beaucoup c'est réglé ^^'
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 ?
Messages postés
40805
Date d'inscription
jeudi 28 août 2003
Statut
Modérateur
Dernière intervention
10 août 2020
4 872
sed "/ma_variable/ s/[0-9]\+/$var/"
;-))
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...
Messages postés
40805
Date d'inscription
jeudi 28 août 2003
Statut
Modérateur
Dernière intervention
10 août 2020
4 872
Re-
var=222yy; sed "/ma_variable/ s/=[^ ]*/=$var/"
;-))
super merci infiniment ça change toutes les variables que je veux :)
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 #...
Messages postés
40805
Date d'inscription
jeudi 28 août 2003
Statut
Modérateur
Dernière intervention
10 août 2020
4 872
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$
;-))
thanks again =)