Cómo modificar / organizar datos en un file con Awk

Tengo un file csv que se parece a esto

ADRESSE_1,ADRESSE_SUITE,CODE 1 boulevard Veyrier Montagnères,,33120 2, rue du Débarcadère,33120 6 bis avenue du Général de Gaulle,,44180 avenue du Parc Pereire,,93250 

En tres líneas, resumo un file que contiene varios cientos de líneas.

Me gustaría limpiar y luego editar este file para que se vea así

 NUMERO,ADRESSE_1,ADRESSE_SUITE,CODE 1,boulevard Veyrier Montagnères,,33120 2,rue du Débarcadère,,33120 6 bis,avenue du Général de Gaulle,,44180 ,avenue du Parc Pereire,,93250 

Las líneas varían de 16 a 17 columnas, ya puedo ajustar esto con este script usando printf para formatear

 BEGIN { FS = "[,]"; OFS = ","; } NF != 16 {printf("%s,%s,%s,%s,%s%s,%s,%s,%s,%s,%s,%s,%s,%s,%s,%s,%s\n"), $1,$2,$3,$4,$5,$6,$7,$8,$9,$10,$11,$12,$13,$14,$15,$16,$17} 

¿Puede alguien guiarme?

Acabo de poner mi solución con sed incluso se le preguntó especialmente por AWK. Encuentro esta solución más compacta y directa:

GNU Sed (probado bajo CentOS):

 sed -n '1!p' addresses.csv | sed -r 's!^([0-9]*(\sbis|\ster)?),?(.*)$!\1,\3!g;s!(.*)([^,])(,[0-9]*)$!\1\2,\3!g' 

OS-X / BSD Sed

 sed -n '1!p' addresses.csv | sed -E 's!^([0-9]*( bis| ter)?),?(.*)$!\1,\3!g;s!(.*)([^,])(,[0-9]*)$!\1\2,\3!g' 

El primer command sed es tomar todas las líneas, excepto la primera (encabezado).

Para el segundo sed , uso sustituciones:

 ^ : Starting text. [0-9]* : all numbers (0, 1, ... 99, 999, 99999999 and so on) ( bis| ter)? : optionally followed by " bis" or " ter" (notice the space before); group 2 ,? : optionally followed by a comma (.*)$ : the rest of the string until the end ($) (group 3) !\1,\3 : replaced by first group (number + extension) - comma - third group 

Tenga en count que el segundo grupo es el paréntesis de 'bis' y 'ter', y el primer grupo es este ([0-9]*( bis| ter){0,1})

La segunda sustitución es para normalizar las comas (si no termina por ,,\d añadimos una coma adicional.

El comentario de @ ruffp es perfecto. Sin embargo, modulo ese problema podrías decir:

 awk -F, '!$2 { sub(/^([0-9]*)/, "&,"); sub(/,,/, ","); } 1' addresses