[Shell Unix] division, arrondi
Fermé
renaud
-
10 nov. 2006 à 20:55
lami20j Messages postés 21331 Date d'inscription jeudi 4 novembre 2004 Statut Modérateur, Contributeur sécurité Dernière intervention 30 octobre 2019 - 22 mars 2008 à 11:07
lami20j Messages postés 21331 Date d'inscription jeudi 4 novembre 2004 Statut Modérateur, Contributeur sécurité Dernière intervention 30 octobre 2019 - 22 mars 2008 à 11:07
A voir également:
- Bash decimal division
- Convertir heure en décimal excel ✓ - Forum Excel
- Bingo bash free - Télécharger - Divers Jeux
- Convertir des heures > à 24h en décimale ✓ - Forum Excel
- Bash permission non accordée - Forum Shell
- Sur excel transformer nombre décimal en h/mn ✓ - Forum Excel
4 réponses
lami20j
Messages postés
21331
Date d'inscription
jeudi 4 novembre 2004
Statut
Modérateur, Contributeur sécurité
Dernière intervention
30 octobre 2019
3 569
10 nov. 2006 à 21:34
10 nov. 2006 à 21:34
Salut,
man bc
man dc
lami20j
echo "scale=2; 5.7/3" | bc
man bc
man dc
lami20j
jipicy
Messages postés
40842
Date d'inscription
jeudi 28 août 2003
Statut
Modérateur
Dernière intervention
10 août 2020
4 896
21 mars 2008 à 11:33
21 mars 2008 à 11:33
Salut,
Tu peux poster un exemple concret s'il te plaît de ce que tu obtiens et de ce que tu aimerais obtenir.
Tu peux poster un exemple concret s'il te plaît de ce que tu obtiens et de ce que tu aimerais obtenir.
Merci d'avoir regardé si rapidement,
Ce que je veux faire :
écrire un nombre au format scientifique dans un fichier .txt
je fais :
M=$((5/2));
printf "%E" $M >> in
avec ca j'obtient : 2.000000E+00
je veux obetinr 2.500000E+00
En plus je suis oblié de diviser des entiers alors que je voudrais diviser des réels.
J'ai donc essaié avec cette commande :
echo "scale=2; 5.7/3" | bc >> in
J'obtiens bien 1.90 mais je n'arrive pas à écrire ce nombre au format scientifique.
Voilà, je ne sais toujours pas si je suis clair mais n'hésite pas à me demander d'autres précisions si besoin.
Merci d'avance
Reg
Ce que je veux faire :
écrire un nombre au format scientifique dans un fichier .txt
je fais :
M=$((5/2));
printf "%E" $M >> in
avec ca j'obtient : 2.000000E+00
je veux obetinr 2.500000E+00
En plus je suis oblié de diviser des entiers alors que je voudrais diviser des réels.
J'ai donc essaié avec cette commande :
echo "scale=2; 5.7/3" | bc >> in
J'obtiens bien 1.90 mais je n'arrive pas à écrire ce nombre au format scientifique.
Voilà, je ne sais toujours pas si je suis clair mais n'hésite pas à me demander d'autres précisions si besoin.
Merci d'avance
Reg
jipicy
Messages postés
40842
Date d'inscription
jeudi 28 août 2003
Statut
Modérateur
Dernière intervention
10 août 2020
4 896
>
reg
21 mars 2008 à 14:29
21 mars 2008 à 14:29
[tmpfs]$ M=$(echo "scale=2; 5/2" | bc) [tmpfs]$ printf "%E\n" $M -l: printf: 2.50: invalid number 0,000000E+00 [tmpfs]$ printf "%E\n" ${M/\./,} 2,500000E+00 [tmpfs]$C'est une question de délimiteur de valeur décimale (le point par défaut) qu'il faut remplacer par une virgule...
Reg
>
jipicy
Messages postés
40842
Date d'inscription
jeudi 28 août 2003
Statut
Modérateur
Dernière intervention
10 août 2020
22 mars 2008 à 00:19
22 mars 2008 à 00:19
Merci beaucoup pour ta réponse,
Ca marche bien
Mais j'ai un autre petit soucis maintenant :
j'ai besoin de rechercher une valeur max dans un fichier txt rempli de valeurs dans une colonne donnée et une plage de ligne donnée.
J'arrive à extraire certaines lignes du fichier dans un fichier temporaire grace aux commande head et tail mais je n'arrive pas à extraire une colonne.
Auriez vous une idée ?
Ca marche bien
Mais j'ai un autre petit soucis maintenant :
j'ai besoin de rechercher une valeur max dans un fichier txt rempli de valeurs dans une colonne donnée et une plage de ligne donnée.
J'arrive à extraire certaines lignes du fichier dans un fichier temporaire grace aux commande head et tail mais je n'arrive pas à extraire une colonne.
Auriez vous une idée ?
lami20j
Messages postés
21331
Date d'inscription
jeudi 4 novembre 2004
Statut
Modérateur, Contributeur sécurité
Dernière intervention
30 octobre 2019
3 569
22 mars 2008 à 07:05
22 mars 2008 à 07:05
Salut,
le fichier (les champs sont séparés par espace)
prenons le cas de la colonne 5 (en gras),
je veux par exemple afficher le max pour la colonne 5 seulement entre les lignes numérotés 3 à 10
le fichier (les champs sont séparés par espace)
lami20j@debian:~/trash$ cat fic 0 8452 2844 180.88 22.81 0.09 1 8452 3137 180.62 2.28 0.14 2 8452 3430 149.66 -1.84 0.30 3 8452 3724 180.62 -28.81 0.15 4 8760 2942 118.56 -18.09 0.12 5 8760 3235 173.00 28.62 0.12 6 8760 3528 149.59 -1.97 0.17 7 8760 3821 149.75 -1.88 0.44 8 9067 3039 157.84 2.12 0.18 9 9067 3333 134.97 -5.31 0.17 10 9067 3626 149.50 -1.75 0.48 11 9375 2844 137.22 -0.03 0.13 12 9375 3137 179.19 9.19 0.14 13 9375 3430 149.38 -1.91 0.47 14 9375 3723 153.91 -19.97 0.10 15 9682 2942 125.97 26.34 0.17
prenons le cas de la colonne 5 (en gras),
je veux par exemple afficher le max pour la colonne 5 seulement entre les lignes numérotés 3 à 10
lami20j@debian:~/trash$ cat fic 0 8452 2844 180.88 22.81 0.09 1 8452 3137 180.62 2.28 0.14 2 8452 3430 149.66 -1.84 0.30 3 8452 3724 180.62 -28.81 0.15 4 8760 2942 118.56 -18.09 0.12 5 8760 3235 173.00 28.62 0.12 6 8760 3528 149.59 -1.97 0.17 7 8760 3821 149.75 -1.88 0.44 8 9067 3039 157.84 2.12 0.18 9 9067 3333 134.97 -5.31 0.17 10 9067 3626 149.50 -1.75 0.48 11 9375 2844 137.22 -0.03 0.13 12 9375 3137 179.19 9.19 0.14 13 9375 3430 149.38 -1.91 0.47 14 9375 3723 153.91 -19.97 0.10 15 9682 2942 125.97 26.34 0.17 lami20j@debian:~/trash$ sed '4,11!d' fic|cut -d" " -f5|sort -n -28.81 -18.09 -5.31 -1.75 -1.88 -1.97 2.12 28.62 lami20j@debian:~/trash$ sed '4,11!d' fic|cut -d" " -f5|sort -n|tail -1 28.62 lami20j@debian:~/trash$
jipicy
Messages postés
40842
Date d'inscription
jeudi 28 août 2003
Statut
Modérateur
Dernière intervention
10 août 2020
4 896
22 mars 2008 à 10:04
22 mars 2008 à 10:04
Hi,
Avec "awk" c'est peut être plus approprié, non ?
Avec "awk" c'est peut être plus approprié, non ?
awk ' NR==3,NR==10 { print $5 }' fic | sort -n | tail -1;-))
lami20j
Messages postés
21331
Date d'inscription
jeudi 4 novembre 2004
Statut
Modérateur, Contributeur sécurité
Dernière intervention
30 octobre 2019
3 569
>
jipicy
Messages postés
40842
Date d'inscription
jeudi 28 août 2003
Statut
Modérateur
Dernière intervention
10 août 2020
22 mars 2008 à 11:07
22 mars 2008 à 11:07
Oui, en effet ;-))
Salut à tous,
j'ai un problème similaire à celui de Renaud.
Dans mon script Shell, j'aimerais diviser deux réels ou entiers et obtenir un réel.
echo "scale=2; 5.7/3" | bc
Cette commande fonctionne mais j'ai besoin d'écrire la résultat dans un fichier .txt
J'utilise normalement :
printf "%E" $variable >> fichier.txt
Mais j'obtiens des valeures entières.
Comment faire ???
Merci d'avance
Reg
j'ai un problème similaire à celui de Renaud.
Dans mon script Shell, j'aimerais diviser deux réels ou entiers et obtenir un réel.
echo "scale=2; 5.7/3" | bc
Cette commande fonctionne mais j'ai besoin d'écrire la résultat dans un fichier .txt
J'utilise normalement :
printf "%E" $variable >> fichier.txt
Mais j'obtiens des valeures entières.
Comment faire ???
Merci d'avance
Reg