This is probably a deeply inelegant way of doing it, but it's just a quickie from some other code I had lying around (that I probably copied from somewhere else!).
# cat csv2.awk
BEGIN {
if (NUMCOLS == "") NUMCOLS=32
if (DELIM == "") DELIM = "\t"
if (REPL == "") REPL = "~"
}
{
gsub(DELIM, REPL)
$0 = gensub(/([^,])\"\"/, "\\1'", "g")
out = ""
n = length($0)
for (i = 1; i <= n; i++) {
if ((ch = substr($0, i, 1)) == "\"") {
inString = (inString) ? 0 : 1
}
out = out ((ch == "," && ! inString) ? DELIM : ch)
}
nfields=split(out,outfields,DELIM);
for (i=1;(i<=nfields)&&(i<=NUMCOLS);i++) {
if (i > 1) {
printf (",");
}
printf ("%s", outfields);
}
printf ("\n");
}
# cat a.csv
"aaaa","10,00.00",work,5555,"aaaa","10,00.00",work,5555,"aaaa","10,00.00",work,5555,"aaaa","10,00.00",work,5555,"aaaa","10,00.00",work,5555,"aaaa","10,00.
etc...
# awk -f csv2.awk a.csv
"aaaa","10,00.00",work,5555,"aaaa","10,00.00",work,5555,"aaaa","10,00.00",work,5555,"aaaa","10,00.00",work,5555,"aaaa","10,00.00",work,5555,"aaaa","10,00.00",work,5555,"aaaa","10,00.00",work,5555,"aaaa","10,00.00",work,5555
(it will fail if there are any tabs in the data, but you can change the delimiter to something else if need be)