Ho un file .csv, con alcuni numeri, voglio ottenere un nuovo file con lo stesso numero di righe e una colonna, con la somma dei numeri della riga corrispondente nel file .csv originale.
Esempio di input (notare gli spazi bianchi, spero che questo non sia un problema)
2, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0
3, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0
4, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0
5, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0
6, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0
Uscita prevista
2
4
5
6
7
Il mio codice (non produce alcun output):
file_out="output.txt"
file_in="input.txt"
cmd3="sum_file=\$(awk -F, '
{
sum = 0;
for (i=1; i<=NF; i++) {
sum += \$i;
}
print sum;
}
' ${file_in})"
echo $cmd3
eval $cmd3
eval "echo ${sum_file} > ${file_out}"
Puoi anche proporre strumenti diversi da awk, ma sarei felice di sapere perché il mio codice non funziona, forse a causa degli spazi bianchi (non credo).
\${sum_file}
. Stavo usando eval per scopi di debug, poiché era facile riecheggiare le linee. Ma così facendo ho introdotto un nuovo bug :( Almeno ora è risolto
eval
lo stai ing? Sembra molto contorto. Ci sono dei requisiti che non ci stai dicendo?