CSV data manipulation: Difference between revisions

Content added Content deleted
Line 4,108: Line 4,108:
{{works with|bash}}
{{works with|bash}}


Very simple solution using powerfull and ancient but strong linux command, I named "tr", and intern variable bash test capabilities :
Very simple solution using powerfull and ancient but strong linux command, I named "tr" and "bc", and internal variable bash test capabilities :
<lang>cat csv | while read S; do
<lang>cat csv | while read S; do
[ -z ${S##*C*} ] && echo $S,SUM || echo $S,`echo $S | tr ',' '+' | bc`
[ -z ${S##*C*} ] && echo $S,SUM || echo $S,`echo $S | tr ',' '+' | bc`
Line 4,114: Line 4,114:


Result :
Result :
<lang> C1,C2,C3,C4,C5,SUM
<lang>C1,C2,C3,C4,C5,SUM
1,5,9,13,17,45
1,5,9,13,17,45
2,6,10,14,18,50
2,6,10,14,18,50
Line 4,120: Line 4,120:
4,8,12,16,20,60</lang>
4,8,12,16,20,60</lang>


Other solution :
Other solution (not from me) :


<lang> bash>exec 0<"$1" # open the input file on stdin
<lang>bash>exec 0<"$1" # open the input file on stdin
exec 1>"$1.new" # open an output file on stdout
exec 1>"$1.new" # open an output file on stdout
{
{