Contenu | Rechercher | Menus

Annonce

Si vous avez des soucis pour rester connecté, déconnectez-vous puis reconnectez-vous depuis ce lien en cochant la case
Me connecter automatiquement lors de mes prochaines visites.

À propos de l'équipe du forum.

#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 smile
bon dimanche

Hors ligne