Utilisation de dc
#1

Bonjour,
J'aime bien utiliser dc pour la stimulation mentale Heart 
Le but est de disposer d'un fichier de données comportant des chiffres et de faire divers calculs avec ces chiffres.
Le fichier d'entrée pouvant être la console.
Par exemple sur debian, j'utilise ça :
Code :
echo '2 3 4' | dc -f - -e '+ * p'
14

Le dc sur OpenBSD accepte un paramètre file comme dernier argument mais me renvoie systématiquement dc: stack empty.
La solution qui fonctionne est celle ci mais qui ne me convient pas.
Code :
echo '2 3 4' '+ * p' | dc
Comment spécifier un fichier de données comportant des chiffres et demander a dc de faire des calculs avec ?
Merci.
Cordialement.
Répondre
#2

Bonjour,

Code :
$ echo '2 3 4 + * p' > maths
$ dc maths
14

ça m'a l'air de fonctionner avec un fichier ?
Répondre
#3

(05-07-2019, 21:22:17)solene a écrit :  Bonjour,

Code :
$ echo '2 3 4 + * p' > maths
$ dc maths
14

ça m'a l'air de fonctionner avec un fichier ?
Oui ça fonctionne comme ça mais :
Si les données sont dans un fichier, ça ne fonctionne pas.
Le but est d'effectuer des calculs sur un fichier et de sortir le résultat.
Par exemple, le fichier data.txt contient les données '2 3 4'.
Puis j'utilise dc pour faire des calculs sur ces données et afficher le résultat.
Code :
dc -e '+ * p' data.txt
ne fonctionne pas et renvoi :
Code :
dc: stack empty
Répondre
#4

Je n'ai pas compris, maintenant que tu connais
la manière qui fonctionne, pourquoi tu persistes
à essayer une manière qui ne fonctionne pas ?
Répondre
#5

Bonjour,
Quand je met au point un script, je travaille sur des données qui sont fixes, notamment au niveau de leurs structures.
Mes données sont dans un fichier, ici data.txt.
Par exemple avec sed :
Code :
sed -e 's/3/A/' data.txt                                           
2 A 4
Une fois que le script est au point, je l'enregistre dans un fichier:
Code :
cat code_sed                                                       
s/3/A/
puis j'utilise ce script comme ça:
Code :
sed -f code_sed data.txt                                           
2 A 4
Je cherche a utiliser la même démarche avec dc.
Pour que ça fonctionne, il faut d'abord lui fournir les données puis le code:
Code :
echo '+ * p' | dc -e "$(<data.txt)" -e "$(</dev/stdin)"
14
Le script est au point, je l'enregistre dans un fichier:
Code :
cat code_dc                                                       
+ * p
puis j'utilise ce script comme ça:
Code :
dc -e "$(<data.txt)" code_dc                                       
14
Je trouve ça un peu lourd avec dc.
Les données sont passées en tant que command (-e) et le paramètre 'FILE' est obligatoirement du code.
Je me demandais si je n'avais pas raté une marche dans l'utilisation de -e et 'FILE' d'où la question.
Cordialement.
Répondre


Atteindre :


Utilisateur(s) parcourant ce sujet : 1 visiteur(s)