Bash script, erreur de calcul?
Bonjour à tous,
J'ai écris ce petit script bash qui doit transformer ce fichier nommé "result":
& 10 & -4.4147079988E+01 & 4.6592513267E+00 & 7.3491923355E+00 \ \
& 12 & -4.4150940635E+01 & 4.6592513267E+00 & 7.3525388258E+00 \ \
& 14 & -4.4151624528E+01 & 4.6594378193E+00 & 7.3495800950E+00 \ \
& 16 & -4.4151715874E+01 & 4.6592457860E+00 & 7.3491923355E+00 \ \
& 18 & -4.4152277518E+01 & 4.6579270685E+00 & 7.3486018485E+00 \ \
& 20 & -4.4152935484E+01 & 4.6582915896E+00 & 7.3484648209E+00 \ \
& 24 & -4.4153569333E+01 & 4.6585501990E+00 & 7.3478948665E+00 \ \
& 28 & -4.4153664604E+01 & 4.6587170762E+00 & 7.3483576215E+00 \ \
en ce fichier nommé "result.out" :
& 10 & -22.07353995 & 4.6592513267 & 7.3491923355 \\
& 12 & -22.07433395 & 4.6592513267 & 7.3525388258 \\
& 14 & -22.07353995 & 4.6594378193 & 7.3495800950 \\
& 16 & -22.07344995 & 4.6592457860 & 7.3491923355 \\
& 18 & -22.07333995 & 4.6579270685 & 7.3486018485 \\
& 20 & -22.06777775 & 4.6582915896 & 7.3484648209 \\
& 24 & -22.04563995 & 4.6585501990 & 7.3478948665 \\
& 28 & -22.07353995 & 4.6587170762 & 7.3483576215 \\
Il faut en gros diviser la deuxième colonne par 2 et effectuer quelques opération de mise en forme pour mettre facilement en latex par la suite.
Le problème est que pour le moment mon code me donne:
& 10 & -3.914707999 & 4.6592513267 & 7.3525388258 \\
& 12 & -3.915094064 & 4.6592513267 & 7.3525388258 \\
& 14 & -3.915162453 & 4.6594378193 & 7.3495800950 \\
& 16 & -3.915171587 & 4.6592457860 & 7.3491923355 \\
& 18 & -3.915227752 & 4.6579270685 & 7.3486018485 \\
& 20 & -3.915293548 & 4.6582915896 & 7.3484648209 \\
& 24 & -3.915356933 & 4.6585501990 & 7.3478948665 \\
& 28 & -3.915366460 & 4.6587170762 & 7.3483576215 \\
Il divise donc mal par 2 ???
Mon code est le suivant :
Code:
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19
|
#!/bin/bash
#set -x
while read n1 n2 n5 val1 n6 val2 n7 val3
do
printf " & "
printf "%'.0f " $n2
printf " & "
val1=$(echo "scale=9; $val1 / 2" | bc)
printf "%'.9f " $val1
printf " & "
printf "%'.10f " $val2
printf " & "
printf "%'.10f " $val3
printf " \\"
printf "\\"
printf " \n"
done < result > result.out |
D'avance merci pour vos réponses.