sed 's/;\([0-9.]*\) \([0-9.]*\)/,[,]/g' input.csv > output.csv
pode fazer o trabalho, mas na segunda linha há 1.306663 103.83587 1.30693 103.83583
group que não tem ;
separador. Se não é um script de erro de impressão deve ser modificado como
sed 's/[; ]\?\([0-9.]\+\) \([0-9.]\+\)/,[,]/g' input.csv > output.csv
que produzem
1,[103.83589,1.30453],[103.83587,1.306663],[103.5,1.30],[103.83883,1.30693],[103.835793,1.30709],[103.835757,1.30725],[103.83572,1.30741],[103.8798,1.30753]
2,[103.83589,1.353],[103.83587,1.306663],[103.83583,1.30693],[103.835793,1.30709],[103.835757,1.30725],[103.83572,1.30741],[103.835,1.30753]
3,[103.83589,1.30653],[103.83587,1.306663],[103.83585,1.306797];1.3693