Embora isso possa ser feito com sed
, seria muito mais legível com perl
; -):
perl -lpe '$n=0;s{,(\d+:)?([^,]*)}{if($1ne""){$r=",0"x($1-$n).",$2";
$n=$1}else{$r=$&};$n++;$r}ge;$_.=",0"x(6-$n)'
Uma possível solução sed
(não muito testada):
sed 's/$/%543210@@@@@@@/;:1
s/^\(\(@*\)[^,]*\),\([0-9]\):\(.*%.*.\{6\}\(.*\)\)//;t1
s/^\([^:]*\),/@@/;t1
s/@*\(.*\)%.*/@@@@@@@/;s/\(\(@[^@]*\)\{7\}\).*//
:2
s/@@/,0@/;t2
y/@/,/;s/,$//'