Remplacer parametres dans une ligne avec Sed
Résolu
asylum35
Messages postés
6
Statut
Membre
-
asylum35 Messages postés 6 Statut Membre -
asylum35 Messages postés 6 Statut Membre -
Bonjour,
Dans le but d' automatiser un test, je dois paramétrer un fichier de configuration.
On y retrouve des paramètres de vitesses, d'accélérations, etc...
Je dois plus précisément remplacer 4 valeurs sur cette ligne:
Test1 1 1 2000 2000 1200 1200 700 700 70 70 300 300 300 300 1 2 1 0 0 -1075 -575 1610 -1575 1289 950 950 1 1200 0 0 0 0 0 0 0 0 0 900 1292 1 1 1 1
Ces 4 valeurs correspondent à : accAVide accCharge decVide decCharge
Au lancement du programme de test, une fenêtre demande de rentrer les accélérations AV et AR ( %acceleration% et %deceleration% )
Quelle commande sed, dois je utiliser selon vous pour remplacer:
les 2 valeurs accAvide et accCharge --> %acceleration%
les 2 valeurs decVide et decCharge --> %deceleration%
Merci d'avance
Dans le but d' automatiser un test, je dois paramétrer un fichier de configuration.
On y retrouve des paramètres de vitesses, d'accélérations, etc...
Je dois plus précisément remplacer 4 valeurs sur cette ligne:
Test1 1 1 2000 2000 1200 1200 700 700 70 70 300 300 300 300 1 2 1 0 0 -1075 -575 1610 -1575 1289 950 950 1 1200 0 0 0 0 0 0 0 0 0 900 1292 1 1 1 1
Ces 4 valeurs correspondent à : accAVide accCharge decVide decCharge
Au lancement du programme de test, une fenêtre demande de rentrer les accélérations AV et AR ( %acceleration% et %deceleration% )
Quelle commande sed, dois je utiliser selon vous pour remplacer:
les 2 valeurs accAvide et accCharge --> %acceleration%
les 2 valeurs decVide et decCharge --> %deceleration%
Merci d'avance
2 réponses
-
Salut,
$ cat plop Test1 1 1 2000 2000 1200 1200 700 700 70 70 300 300 300 300 1 2 1 0 0 -1075 -575 1610 -1575 1289 950 950 1 1200 0 0 0 0 0 0 0 0 0 900 1292 1 1 1 1 $ sed 's/[^ ]*/TOTO/12;s/[^ ]*/TATA/13;s/[^ ]*/TITI/14;s/[^ ]*/TUTU/15' plop Test1 1 1 2000 2000 1200 1200 700 700 70 70 TOTO TATA TITI TUTU 1 2 1 0 0 -1075 -575 1610 -1575 1289 950 950 1 1200 0 0 0 0 0 0 0 0 0 900 1292 1 1 1 1 $
;-))
-
-
-
Merci zipe31;
du coup voilà mon script:
read -p 'acceleration? ' $acceleration read -p 'deceleration? ' $deceleration sed -e '12{s/[^\t]*/$acceleration/12;s/[^\t]*/$acceleration/13;s/[^\t]*/$deceleration/14;s/[^\t]*/$deceleration/15}' Circuit.trk
mais voila ce que j'ai dans mon fichier à la ligne 12:
Test1 1 1 2000 1200 2000 1200 300 500 50 50 $acceleration $acceleration $deceleration $deceleration ....
pas moyen de recuperer les valeurs ! -
Vu que tu as des variables dans ton expression, il te faut mettre des quotes doubles autour de l'expression avec "sed", sans quoi les variables ne sont pas interprétées ;-(
sed -e "12{s/[^\t]*/$acceleration/12;s/[^\t]*/$acceleration/13;s/[^\t]*/$deceleration/14;s/[^\t]*/$deceleration/15}" Circuit.trk -
-
-
hello
$ cat a1 Test1 1 1 2000 2000 1200 1200 700 700 70 70 300 300 300 300 1 2 1 0 0 -1075 -575 1610 -1575 1289 950 950 1 1200 0 0 0 0 0 0 0 0 0 900 1292 1 1 1 1 $ acceleration="111 222" $ deceleration="333 444" $ awk -v var="$acceleration $deceleration" '{split(var,a) ; for(n=1;n<5;n++)$(n+11)=a[n] ; print}' a1 Test1 1 1 2000 2000 1200 1200 700 700 70 70 111 222 333 444 1 2 1 0 0 -1075 -575 1610 -1575 1289 950 950 1 1200 0 0 0 0 0 0 0 0 0 900 1292 1 1 1 1 $