43 lines
993 B
Plaintext
43 lines
993 B
Plaintext
#
|
|
# csv data manipulation
|
|
#
|
|
|
|
# declare a string stream to hold lines
|
|
decl string<> lines
|
|
|
|
# open the file specified on the command line, halting
|
|
# execution if they didn't enter one. it will be created if
|
|
# it doesn't exist yet
|
|
decl file f
|
|
if (< (size args) 2)
|
|
out "error: please specify a csv file" endl console
|
|
stop
|
|
end if
|
|
f.create args<1>
|
|
f.open args<1>
|
|
|
|
# read in all lines from the file
|
|
set lines (f.readlines)
|
|
|
|
# append sum column to header
|
|
set lines<0> (+ lines<0> ",SUM")
|
|
|
|
# determine sums and append them
|
|
decl int i sum
|
|
for (set i 1) (< i (size lines)) (inc i)
|
|
set sum 0
|
|
for (decl int j) (< j (size (split lines<i> ","))) (inc j)
|
|
set sum (int (+ sum (int (split lines<i> ",")<j>)))
|
|
end for
|
|
set lines<i> (+ lines<i> (+ "," sum))
|
|
end for
|
|
|
|
# delete the file, then create it again
|
|
f.delete args<1>
|
|
f.create args<1>
|
|
|
|
# output all lines to the file
|
|
for (set i 0) (< i (size lines)) (inc i)
|
|
out lines<i> endl f
|
|
end for
|