[BASH] Division par mille sans BC
Résolu
Paullux_1er
Messages postés
123
Date d'inscription
Statut
Membre
Dernière intervention
-
dubcek Messages postés 18789 Date d'inscription Statut Contributeur Dernière intervention -
dubcek Messages postés 18789 Date d'inscription Statut Contributeur Dernière intervention -
Bonjour,
J'ai accès à un serveur linux en ssh, et j'ai un problème important, je dois traiter des données d'un csv vers un autre, hors bc n'est pas installé et ne peut pas l'être.
Et à un moment j'ai une division par mille, comment :
- premièrement avec sed modifier ma variable pour faire comme si on la multiplie par mille en déplaçant le point et éventuellement ajouter des zéros.
- deuxièmement avec let ajouter une valeur (je sais faire).
- troisièmement pour finir avec sed, il faut à nouveau déplacer le point comme une division par mille, et éventuellement enlever les zéros.
Pour être honnête j'ai un peu de mal avec sed.
Merci de votre aide, merci d'avance.
J'ai accès à un serveur linux en ssh, et j'ai un problème important, je dois traiter des données d'un csv vers un autre, hors bc n'est pas installé et ne peut pas l'être.
Et à un moment j'ai une division par mille, comment :
- premièrement avec sed modifier ma variable pour faire comme si on la multiplie par mille en déplaçant le point et éventuellement ajouter des zéros.
- deuxièmement avec let ajouter une valeur (je sais faire).
- troisièmement pour finir avec sed, il faut à nouveau déplacer le point comme une division par mille, et éventuellement enlever les zéros.
Pour être honnête j'ai un peu de mal avec sed.
Merci de votre aide, merci d'avance.
A voir également:
- Bash division
- Bingo bash - Télécharger - Divers Jeux
- Microsoft skype division - Télécharger - Téléphonie & Visio
- Bash list ✓ - Forum Shell
- Division en c - Forum C
- Bash permission non accordée - Forum Shell
1 - D'abord avec awk multiplier par mille la valeur $3 du fichier csv.
2 - Puis additionner à la nouvelle valeur $3 la valeur qu'il faut ajouter, directement dans le bash, car on a 2 entiers naturels, donc plus de problème de nombres décimaux qui eux nécessitent BC.
3 - Et finalement utiliser sed pour placer le séparateur en point : "." en laissant 3 chiffres après le point :
Somme=$(echo $Somme | sed 's/...$/.&/')
4 - Après il faut recréer le csv avec la nouvelle valeur.
type de valeur 1, type de valeur 2, type de valeur 3, type de valeur 4, type de valeur 5
0,0,456789.123,0,0
auquel il faut ajouter un nombre mille fois plus petit de type 1234.
ce qui donne à la sortie :
type de valeur 1, type de valeur 2, type de valeur 3, type de valeur 4, type de valeur 5
0,0,456790.357,0
vois tu ce que je veux dire, et mon script marche bien depuis des mois.