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 :)
Ed ecco qui una semplificazione o alternativa del comando ;) :
RispondiEliminafor i in $(cat NOMEFILE); do somma=$((somma+i)); done && echo $somma
Io invece farei in questo modo utilizzando il comando awk:
RispondiEliminaawk '{somma +=$1} END { print somma }' miofile.txt
Ciao
Jamil
@Jamil
RispondiEliminacaspita awk! Vero non ci avevo pensato XD
@Jamil
RispondiEliminaGrazie per il contributo :)