Contenu | Rechercher | Menus

Annonce

Ubuntu 16.04 LTS
Commandez vos DVD et clés USB Ubuntu-fr !

Pour en savoir un peu plus sur l'équipe du forum.

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.

#1 Le 08/11/2017, à 22:44

paulwoisard

Multiplier et diviser par 1000 grâce à sed (RESOLU)

Bonjour,

Je me pose une question, sur une machine où je n'ai pas les droits administrateurs, j'ai un calcul à effectuer avec un rapport mille, hors je n'est pas bc sur la machine.

Je pense qu'il doit être possible de "multiplier" mon premier nombre décimal par mille grâce à sed en déplaçant le point et en ajoutant éventuellement des zéros.
Dés lors  j'obtiendrais un nombre entier auquel je pourrais additionner un autre entier avec let.

Et là il ne me reste plus qu'à réutiliser la méthode "sed" à l'inverse pour rediviser par mille et supprimer les zéros de fin.

Le truc c'est que j'ai beaucoup de mal avec sed, est-ce qu'il y a quelqu'un peut m'aider ?

Dernière modification par paulwoisard (Le 08/11/2017, à 23:55)

Hors ligne

#2 Le 08/11/2017, à 23:02

Zakhar

Re : Multiplier et diviser par 1000 grâce à sed (RESOLU)

Cela dépend de la certitude que tu as d'avoir de chiffres de la forme nnnn.yyy

S'ils sont TOUJOURS ainsi, c'est facile de "déplacer" le séparateur.

Par contre si le nombre peut aussi être écrit : 1245.15 (et non pas .150) ou 1245.1 (et non pas .100), ou même 1245 (au lieu de 1245.000) s'il se trouve que la décimale est nulle, là tout devient plus compliquer pour gérer tous les cas possibles.


"A computer is like air conditioning: it becomes useless when you open windows." (Linus Torvald)

Hors ligne

#3 Le 08/11/2017, à 23:14

Zakhar

Re : Multiplier et diviser par 1000 grâce à sed (RESOLU)

Voila :

$ i='12,1'
$ j='24,5'
$ echo $(( $( printf '%.3f' $i | sed 's/,//' ) + $( printf '%.3f' $j | sed 's/,//' ) )) | sed 's/\(...\)$/,\1/'
36,600

Les printf formatés pour tenir compte que les chiffres peuvent avoir été abrégés sans les 3 chiffres après la virgule. Si tu es sûr de toujours avoir ces 3 chiffres, tu peux enlever le format dans le printf.


"A computer is like air conditioning: it becomes useless when you open windows." (Linus Torvald)

Hors ligne

#4 Le 08/11/2017, à 23:38

Watael

Re : Multiplier et diviser par 1000 grâce à sed (RESOLU)

salut,

et t'as pas (g)awk ?


eval, c'est mal.

Hors ligne

#5 Le 08/11/2017, à 23:54

paulwoisard

Re : Multiplier et diviser par 1000 grâce à sed (RESOLU)

Si c'est ce que j'ai utilisé quelques minutes après avoir posté mon message, en lisant des forums et des docs.

surtout que je manipule des fichiers csv. Voilà ce que ça donne :

echo $ValTot";"$(awk -F ";" 'NR == 1 {print $3/1000}' temp2.csv) > csvtemp2.csv
ValTot=$(awk -F ";" 'NR == 1 {print $1+$2}' csvtemp2.csv)
rm csvtemp2.csv

Merci pour votre aide.

Dernière modification par paulwoisard (Le 08/11/2017, à 23:55)

Hors ligne

#6 Le 09/11/2017, à 04:20

Watael

Re : Multiplier et diviser par 1000 grâce à sed (RESOLU)

il faut aussi donner ta solution sur Comment Ça Marche.

c'est (entre autres choses) pourquoi il est préférable de ne pas poster sur plusieurs forums :
il faut retourner sur chacun pour y donner la solution choisie.
wink


eval, c'est mal.

Hors ligne