Aqui está uma maneira awk
: se houver mais de cinco campos delimitados por vírgula, percorra os campos "intermediários" concatenando-os antes de imprimir o novo campo entre aspas, seguido pelos dois campos finais:
awk -f awkscript.awk < input
Com o seguinte como awkscript.awk
:
BEGIN {
OFS=","
FS=","
}
{
if (NF > 5) {
middle=""
for(i=3; i <= NF-2; i++)
middle=(middle ? middle"," : "")$i
print $1, $2, "\""middle"\"", $(NF-1), $NF
} else {
print $1, $2, "\""$3"\"", $4, $5
}
}