mercoledì 23 novembre 2011

Come faccio a sommare i numeri contenuti in un file di testo?

Io e il caro Lightuono abbiamo deciso di dare vita ad una nuova sezione del progetto bash: "Botta e Risposta"

C'è poco da dire al riguardo, ci si pone delle domande (su bash, ovvio! :D) e si cerca di dare una risposta. Ovviamente noi daremo una risposta, ma non è detto che sia l'unica possibile.


Insomma è importante anche il vostro contributo. Posta la domanda, saremo ben lieti di accogliere ulteriori soluzioni. :)

Ho un file di testo (miofile.txt) dove i numeri sono disposti nel modo seguente:

5
27
89
90
21
88
77


Per fare la somma dei numeri disposti in colonna, lancio il seguente script:

#!/bin/bash

somma=0

while read -r riga

 do
     somma=$((somma += riga))

 done < $1


echo $somma

exit 0



Risultato:

$./somma.sh miofile.txt

397

PS1. Io personalemente faccio altro nella vita, non sono affatto un programmatore. Chi, invece, ne sa veramente tanto su bash è il caro Light. E' meglio che si sappia, senza di lui non ci sarebbe stato alcun progetto bash, tanto meno quest'ultima iniziativa.
PS2. Il vostro contributo è essenziale.
PS3. Presto aggiungeremo un link nell'indice del progetto bash che rimanda alla pagina "Botta e Risposta".

Ciao :)

4 commenti:

  1. Ed ecco qui una semplificazione o alternativa del comando ;) :

    for i in $(cat NOMEFILE); do somma=$((somma+i)); done && echo $somma

    RispondiElimina
  2. Io invece farei in questo modo utilizzando il comando awk:

    awk '{somma +=$1} END { print somma }' miofile.txt

    Ciao

    Jamil

    RispondiElimina
  3. @Jamil

    caspita awk! Vero non ci avevo pensato XD

    RispondiElimina
  4. @Jamil
    Grazie per il contributo :)

    RispondiElimina