Pages : 1
#1 Le 09/02/2014, à 12:27
- asceltis
commande sed
bonjour,
j'ai lu le man de sed mais bon ....soit c'est le man qui est pas clair soit c'est moi
j'ai un fichier avec une variable :
ESSAIS_MAX="4"
je souhaite modifier le 4 par une autre valeur, pour ce faire je fais cela :
echo "taper le nouveau seuil :"
read seuil
sed -i "s/^ESSAIS_MAX/ESSAIS_MAX=$seuil/" /chemin_de_mon_fichier
si je tape 5 puis 6, si je vais dans mon fichier j'ai cela :
ESSAIS_MAX=6=5="4"
comment puis-je faire pour ne changer que ce qu'il y a entre cote par une autre valeur entre cote ?
merci bien
Dernière modification par asceltis (Le 09/02/2014, à 12:39)
Hors ligne
#2 Le 09/02/2014, à 12:31
- ljere
Re : commande sed
bonjour,
je ne suis pas sur mais il me semble que c'est
sed -i "s/^ESSAIS_MAX/ESSAIS_MAX=$seuil/g" /chemin_de_mon_fichier
ancien PC Toshiba satellite_c670d-11 / Linux Mint 21 Vanessa
Nouveau PC ASUS TUF GAMING A17 GPU RTX 4070 CPU AMD Ryzen 9 7940HS w/ Radeon 780M Graphics / Linux Mint 21.2 Victoria / Kernel: 6.4.8-1-liquorix / Desktop: Cinnamon
Hors ligne
#3 Le 09/02/2014, à 12:34
- asceltis
Re : commande sed
je viens de test cela me rend
ESSAIS_MAX=5"4"
merci en tout cas
Dernière modification par asceltis (Le 09/02/2014, à 12:40)
Hors ligne
#4 Le 09/02/2014, à 12:46
- ljere
Re : commande sed
c'est bien cela alors sauf que tu dois integrer tout ce que tu veux remplacer
je pencherai pour
sed -i "s/^ESSAIS_MAX=\"*\"/ESSAIS_MAX=$seuil/" /chemin_de_mon_fichier
ancien PC Toshiba satellite_c670d-11 / Linux Mint 21 Vanessa
Nouveau PC ASUS TUF GAMING A17 GPU RTX 4070 CPU AMD Ryzen 9 7940HS w/ Radeon 780M Graphics / Linux Mint 21.2 Victoria / Kernel: 6.4.8-1-liquorix / Desktop: Cinnamon
Hors ligne
#5 Le 09/02/2014, à 12:51
- asceltis
Re : commande sed
je continue à chercher de mon coté avec des histoires de \1...
sinon ta commande me donne en erreur :
sed : -e expression #1, char 30 : unterminated 's' command
merci en tout cas
Hors ligne
#6 Le 09/02/2014, à 12:52
- Postmortem
Re : commande sed
Salut,
sed -i "/^ESSAIS_MAX=/ s/\"[0-9]*\"/\"$seuil\"/" fichier
Edit :
Ou avec les références arrières :
sed -i "s/^\(ESSAIS_MAX=\"\).*/\1$seuil\"/" fichier
Dernière modification par Postmortem (Le 09/02/2014, à 13:03)
Mot' a dit : « Un Hellfest sans Slayer, c'est comme une galette-saucisse sans saucisse ! »
Hors ligne
#7 Le 09/02/2014, à 12:56
- ljere
Re : commande sed
oui je viens de le trouver aussi c'est [0-9]qui me manquait
ancien PC Toshiba satellite_c670d-11 / Linux Mint 21 Vanessa
Nouveau PC ASUS TUF GAMING A17 GPU RTX 4070 CPU AMD Ryzen 9 7940HS w/ Radeon 780M Graphics / Linux Mint 21.2 Victoria / Kernel: 6.4.8-1-liquorix / Desktop: Cinnamon
Hors ligne
#8 Le 09/02/2014, à 12:59
- asceltis
Re : commande sed
déjà merci à vous pour votre aide
j'ai trouvé cela :
sed -i 's/^ESSAIS_MAX=.*/ESSAIS_MAX='"$seuil"'/' fichier
par contre juste une petit confirmation ma variable etait de la forme
ESSAIS_MAX="4"
avec cette commande elle devient
ESSAIS_MAX=$seuil
(il n'y a plus les cotes) cela ne va t il pas poser des problèmes ?
merci encore
Hors ligne
#9 Le 09/02/2014, à 13:07
- ljere
Re : commande sed
il faut les échapper pour qu'ils soient pris en compte c'est à dire \"
ancien PC Toshiba satellite_c670d-11 / Linux Mint 21 Vanessa
Nouveau PC ASUS TUF GAMING A17 GPU RTX 4070 CPU AMD Ryzen 9 7940HS w/ Radeon 780M Graphics / Linux Mint 21.2 Victoria / Kernel: 6.4.8-1-liquorix / Desktop: Cinnamon
Hors ligne
#10 Le 09/02/2014, à 13:10
- Postmortem
Re : commande sed
Si ton fichier est un script shell que tu exécutes, ça ne devrait pas poser de problèmes dans ce cas qu'il y ait les guillemets ou pas.
Mot' a dit : « Un Hellfest sans Slayer, c'est comme une galette-saucisse sans saucisse ! »
Hors ligne
#11 Le 09/02/2014, à 13:18
- asceltis
Re : commande sed
je vous remercie en tout cas pour votre aide
bon dimanche
Hors ligne
Pages : 1