As I understand your problem, this should be all you need - and it's all processed in a single stream, so you should handle the big file much more efficiently that way.
I did a small test on this like:
{ sed -e '/\n\n/{s///w aaa3
d' -e '};s/,/\n/20;P;G;D' |
sed -ne 'w aaa1' -e 'n;p'
} <<DATA > aaa2
$(
seq -s, 100 | tee - - - -
)
DATA
Then I printed the results like:
for f in 1 2 3
do printf '\n%s\n' aaa$f
cat aaa$f
done
And success!
aaa1
1,2,3,4,5,6,7,8,9,10,11,12,13,14,15,16,17,18,19,20
1,2,3,4,5,6,7,8,9,10,11,12,13,14,15,16,17,18,19,20
1,2,3,4,5,6,7,8,9,10,11,12,13,14,15,16,17,18,19,20
1,2,3,4,5,6,7,8,9,10,11,12,13,14,15,16,17,18,19,20
1,2,3,4,5,6,7,8,9,10,11,12,13,14,15,16,17,18,19,20
aaa2
21,22,23,24,25,26,27,28,29,30,31,32,33,34,35,36,37,38,39,40
21,22,23,24,25,26,27,28,29,30,31,32,33,34,35,36,37,38,39,40
21,22,23,24,25,26,27,28,29,30,31,32,33,34,35,36,37,38,39,40
21,22,23,24,25,26,27,28,29,30,31,32,33,34,35,36,37,38,39,40
21,22,23,24,25,26,27,28,29,30,31,32,33,34,35,36,37,38,39,40
aaa3
41,42,43,44,45,46,47,48,49,50,51,52,53,54,55,56,57,58,59,60,61,62,63,64,65,66,67,68,69,70,71,72,73,74,75,76,77,78,79,80,81,82,83,84,85,86,87,88,89,90,91,92,93,94,95,96,97,98,99,100
41,42,43,44,45,46,47,48,49,50,51,52,53,54,55,56,57,58,59,60,61,62,63,64,65,66,67,68,69,70,71,72,73,74,75,76,77,78,79,80,81,82,83,84,85,86,87,88,89,90,91,92,93,94,95,96,97,98,99,100
41,42,43,44,45,46,47,48,49,50,51,52,53,54,55,56,57,58,59,60,61,62,63,64,65,66,67,68,69,70,71,72,73,74,75,76,77,78,79,80,81,82,83,84,85,86,87,88,89,90,91,92,93,94,95,96,97,98,99,100
41,42,43,44,45,46,47,48,49,50,51,52,53,54,55,56,57,58,59,60,61,62,63,64,65,66,67,68,69,70,71,72,73,74,75,76,77,78,79,80,81,82,83,84,85,86,87,88,89,90,91,92,93,94,95,96,97,98,99,100
41,42,43,44,45,46,47,48,49,50,51,52,53,54,55,56,57,58,59,60,61,62,63,64,65,66,67,68,69,70,71,72,73,74,75,76,77,78,79,80,81,82,83,84,85,86,87,88,89,90,91,92,93,94,95,96,97,98,99,100
pastewith one argument usually is very useful.