J'ai un fichier texte "toto.txt" avec une liste de chiffres (1 chiffre par ligne), je souhaite créer un script bash pour faire l'addition de tous les chiffres pour les placer dans une variable "addition" et créer un nouveau fichier texte "total.txt"
Je n'ai rien trouvé de concluant sur le net c'est pourquoi je m'adresse ici.
la recherche d'informations fait aussi partie du travail; si tu ne veux pas le faire, pourquoi en ferais-je davantage ? la lecture d'un fichier en shell est traitée dans tous les tutos, sur tous les forums relatifs au shell.
Validez la réponse utile « Un problème clairement exposé est à moitié résolu. » Pas de MP technique
ça t'a pris 5 sec mais ça ne réponds pas à mes attentes, je ne veux pas d'incrémentation , mais un résultat direct pour un gain de temps et peu de ressource machine, moi aussi je suis tombé sur cette page, mais si je viens ici c'est que je n'ai rien trouvé...
Je ne vois pas comment tu peux avoir un résultat direct. Dans tous les cas il faudra lire ligne par ligne et additionner pour ensuite afficher le résultat. Il n'y a aucun appel système « additionne toutes les lignes »
Par contre je meurs d'envie de savoir pourquoi cette solution ne te convient pas, je viens d'essayer avec un fichier contenant des entier de 1 à 1000000 et le résultat prend même pas 0.4s.
$ time awk '{s+=$1} END {print s}' data.txt
500000500000
awk '{s+=$1} END {print s}' data.txt 0.42s user 0.01s system 98% cpu 0.428 total
Si 0.4 secondes n'est pas assez rapide, tu n'as pas le choix tu devras le faire en C. Le shell est particulièrement connu pour ne pas toujours être super performant.
- Edité par markand 25 septembre 2019 à 13:42:33
git is great because Linus did it, mercurial is better because he didn't.
très rapide awk, mais ce n'est pas le shell; c'est un langage à part entière (comme python, perl...), qui est exécuté dans le shell, comme l'est n'importe quel programme (C ou autre).
c'est inscrit dans le man bash, à la section bugs : "il est trop gros, et trop lent". pour quelques centaines de lignes, c'est presque insensible, au-delà...
× Après avoir cliqué sur "Répondre" vous serez invité à vous connecter pour que votre message soit publié.
× Attention, ce sujet est très ancien. Le déterrer n'est pas forcément approprié. Nous te conseillons de créer un nouveau sujet pour poser ta question.
01000110011011000110111101110010011001010110111001110100
Validez la réponse utile « Un problème clairement exposé est à moitié résolu. » Pas de MP technique
01000110011011000110111101110010011001010110111001110100
Validez la réponse utile « Un problème clairement exposé est à moitié résolu. » Pas de MP technique
01000110011011000110111101110010011001010110111001110100
Validez la réponse utile « Un problème clairement exposé est à moitié résolu. » Pas de MP technique
01000110011011000110111101110010011001010110111001110100
Validez la réponse utile « Un problème clairement exposé est à moitié résolu. » Pas de MP technique
git is great because Linus did it, mercurial is better because he didn't.
01000110011011000110111101110010011001010110111001110100
git is great because Linus did it, mercurial is better because he didn't.
Validez la réponse utile « Un problème clairement exposé est à moitié résolu. » Pas de MP technique
01000110011011000110111101110010011001010110111001110100