Eu provavelmente alcançaria o csplit em vez do perl: é difícil dar uma resposta precisa (testada) desde que você postou uma imagem png do seu arquivo em vez do texto real, mas algo como
csplit -f 'coord.xyz_' -b '%d' yourfile '/^[[:space:]]*37$/' '{*}'
onde
-
-f 'coord.xyz_'
define o prefixo do nome do arquivo de saída -
-b '%d'
define o formato de sufixo numérico de saída para dígitos decimais não-preenchidos - a expressão regular
/^[[:space:]]*37$/
corresponde a37
, opcionalmente precedida por espaço em branco -
{*}
diz para repetir o padrão anterior quantas vezes for possível
Observe que a expressão regular pode ser simplificada com base no conteúdo real do seu arquivo: por exemplo, se o marcador 37
for sempre recuado por uma única guia, você poderá reduzi-lo para /^\t37$/
.
Se você deseja implementar algo equivalente em perl (conforme sua tag), então, com base nessa sugestão Como posso dividir um arquivo de texto em vários arquivos de texto? você poderia tentar
perl -ne 'open(F, ">", "coord.xyz_".++$n) if /[[:space:]]*37/; print F;' yourfile