Você pode usar o utilitário csplit
para dividir em uma expressão regular, por exemplo,
csplit -z file.csv '/^[0-9]\+,/' '{*}'
80
42
(as contagens indicam o número de caracteres gerados em cada arquivo - você pode suprimi-los adicionando a opção -s
).
Os arquivos de saída são nomeados xx00
, xx01
etc. por padrão - existem opções para alterar o prefixo e o sufixo, se desejar.
Ex.
$ csplit -z file.csv '/^[0-9]\+,/' '{*}'
80
42
$ head xx*
==> xx00 <==
1,'someval','otherval',,,,,
'','someotherval','some_otherval',,,,,
1BSD,'',,,,,
==> xx01 <==
2,'val',,,,,
,,,,,,
2BSD,,,,,,
2BCD,,,,,,