Como Michael Homer comenta , qualquer csplit compatível com POSIX pode ter mais de 99 arquivos, mas você precisa passar a opção -n
.
csplit -n 3 file_to_split.txt
Dito isto, se você tem uma tarefa que pode ser feita facilmente com a versão GNU do csplit mas não com a versão FreeBSD / OSX, você pode instalar a versão GNU (parte do GNU coreutils). Coreutils GNU podem ser instalados através de várias fontes, acho que o mais popular é o homebrew . Veja também Como substituir o Mac OS X utilitários com utilitários principais GNU? .
Como alternativa, a maior parte do csplit pode ser implementada em algumas linhas do awk, e isso oferece mais flexibilidade em termos de coisas como o nome do arquivo de saída. O snippet a seguir lê a entrada padrão e grava linhas em part-000.txt
, part-001.txt
, etc., alterando arquivos toda vez que uma linha contém header-line
.
awk '
/header-line/ {
++part;
if (output_file) close(output_file);
output_file=snprintf("part-%03d.txt", part)
}
{print >file}
'