Here's a solution that works with regular awk (does not require gawk ).
awk -v OFS=',' '{print substr($0,1,4), substr($0,5,2), substr($0,7,5), substr($0,12,1), substr($0,13,1)}'
It uses the awk substr function to determine each starting position and field length. OFS defines what the output field separator is (in this case, a comma).
(Lateral note: This only works if the source data does not contain any commas. If the data has commas, then you need to avoid having the correct CSV, which is beyond the scope of this question.)
Demo:
echo 'aasdfh9013512 ajshdj 2445df' | awk -v OFS=',' '{print substr($0,1,4), substr($0,5,2), substr($0,7,5), substr($0,12,1), substr($0,13,1)}'
Output:
aasd,fh,90135,1,2 ajsh,dj, 2445,d,f