Modification variable dans un fichier
Résolu
Harry974
-
Harry974 -
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 !
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 !
A voir également:
- Modification variable dans un fichier
- Fichier bin - Guide
- Comment réduire la taille d'un fichier - Guide
- Comment ouvrir un fichier epub ? - Guide
- Fichier rar - Guide
- Fichier .dat - Guide
9 réponses
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 :
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.kshDonc 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
:(
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
:(
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 ?
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 ?
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...
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...
Vous n’avez pas trouvé la réponse que vous recherchez ?
Posez votre question
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 #...
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 #...